
基于Bootstrap+Nodejs的Web应用(一)
每次请求,服务器检查是否存在SessionID,无则创建并返回,保存在客户端的Cookie中。 后续请求,浏览器会携带SessionID。 服务器根据SessionID判断请求。
发布日期:2021-05-14 05:22:00
浏览次数:21
分类:精选文章
本文共 2467 字,大约阅读时间需要 8 分钟。
前言
自己前后也参与过几个Web项目,但技术框架杂乱,主要只负责部分工作,对Web应用整体结构理解不深入。技术总是服务于应用,这让我思考:如果有一个需求,我是否能从零开始完整搭建一个应用,而不是基于别人的框架修补?于是选择了当下流行且适合快速开发的框架进行练手,了解整个流程。
技术选型:Bootstrap + Node.js + Express + MySQL
项目目标是实现以下功能:
- 登录功能:用户合法性判断
- 主界面:菜单栏+功能区
- 功能:数据的查询与修改
登录界面
登录界面是应用的门面,选择一个高背景风格会让应用看起来更高大上。虽然美化不擅长,但可以直接搜索Bootstrap登录界面模板,免费且有多种选择,适合个人喜好。这里选择了欧美简约大气风格的模板。
前台逻辑: 点击登录按钮触发AJAX POST请求,发送用户名和密码。根据后台返回结果跳转到主界面或显示错误提示。
$("#login0").click(function() { var username = $("#username").val(); var password = $("#password").val(); var data = { "uname": username, "upwd": password }; $.ajax({ url: '/login', type: 'post', data: data, success: function(data) { if(data.status == 'success') { location.href = 'main'; } else if(data.status == 'fail') { $("#loginTips").text("登录失败"); $("#loginTips").toggleClass("hidden"); } }, error: function(data) { if(data.status == 'fail') { $("#loginTips").text("登录失败"); $("#loginTips").toggleClass("hidden"); } } });});
后台逻辑: 使用Express的Router对象定义路由,通过req
和res
处理请求。res.json
用于返回JSON格式的响应。
router.route("/login").get(function(req, res) { res.render("login", { title: 'User Login' });}).post(function(req, res) { var uname = req.body.uname; var retFail = { status: 'fail' }; var retSuccess = { status: 'success' }; console.log("uname: " + uname); if(uname == "test") { res.json(retFail); return; } req.session.user = { uname: "han", upwd: "pwd" }; res.json(retSuccess);});
调试
使用Firefox进行前台调试,查看网络请求记录、方法类型、发送参数、响应数据和CSS样式。可以通过Network-tab和Console-tab深入了解前后台的交互。
Session
需求诞生背景: HTTP协议基于TCP/IP,使用短连接模式,无法标识不同请求之间的关系,因此需要引入Session。
生命周期:
常见用途:
- 登录判断
- 用户状态管理
常见问题:
- 关闭浏览器后仍能访问:Session未失效,SessionID存在Cookie中且有效。
过程中的问题
location.href
:
- 可以打开当前页面的URL
parent.location.href
:打开父页面的URLtop.location.href
:打开顶层页面的URL
CSS选择器:
- 并列:一次指定多个元素,使用类名
class1 class2
。 - 嵌套:定义父子关系,比如
div p
。 - 父子:使用
>
符号,定义严格父子关系,比如div > p
。
Bootstrap原理:
- 自适应布局:使用百分比设定宽度,
col-sm-4
为父容器的33%宽度。 - 居中对齐:使用
offset
,即左外边距,col-sm-offset-4
为33%左外边距。
CSS示例:
.col-sm-offset-4 { margin-left: 33.33333333%;}.col-sm-4 { width: 33.33333333%;}
div容器特性:
div
是块级元素,独占一行。
结论
通过本次项目实践,熟悉了从零开始搭建Web应用的流程,掌握了 Bootstrap、Node.js、Express 和 MySQL 的基本使用方法。虽然过程中遇到了一些问题,但通过调试和学习逐步解决了这些问题。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月14日 06时25分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
flume使用中的一些常见错误解决办法 (地址已经使用)
2019-03-07
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2019-03-07
张一鸣:创业7年,我经历的5件事
2019-03-07
SQL基础语法
2019-03-07
git拉取远程指定分支代码
2019-03-07
《web安全入门》(四)前端开发基础Javascript
2019-03-07
python中列表 元组 字典 集合的区别
2019-03-07
python struct 官方文档
2019-03-07
Android DEX加固方案与原理
2019-03-07
Android Retrofit2.0 上传单张图片和多张图片
2019-03-07
iOS_Runtime3_动态添加方法
2019-03-07
Leetcode第557题---翻转字符串中的单词
2019-03-07
Problem G. The Stones Game【取石子博弈 & 思维】
2019-03-07
Unable to execute dex: Multiple dex files
2019-03-07
Java多线程
2019-03-07
Unity监听日记
2019-03-07