该项目是仿照某些网站的留言列表做的一些小功能,项目没有划分 M V C,使用的前台技术是 Bootstrap,后台使用的是 Node.js,模板引擎使用的是 EJS,数据库是 MySQL。
依赖
- Bootstrap
- jQuery- 使用 jQuery 的 ajax 做异步无刷新列表加载
 
- EJS
- Node.js- express- body-parser express 的中间件(middleware),可以用来解析 post 请求体数据
 
- mysql
- moment
 
- express
- js-cookie
安装依赖
| 1 | $ npm install bootstrap jquery express art-template --save | 
package.json (包括项目后面流程安装的依赖包)
| 1 | { | 
页面搭建:Bootstrap
最终完整页面
| 1 | 
 | 
数据库设计: feedback
| 名 | 类型 | 长度 | 小数点 | 不是null | 主键 | 
|---|---|---|---|---|---|
| id | int | 空 | 空 | yes | yes | 
| message | text | 空 | 空 | yes | 空 | 
| name | varchar | 50 | 空 | yes | 空 | 
| varchar | 50 | 空 | yes | 空 | |
| data | datatime | 空 | 空 | yes | 空 | 
页面入口/后台数据处理 app.js
安装依赖:
| 1 | $ npm install body-parser moment ejs --save | 
app.js
| 1 | const express = require('express'); | 
渲染页面 EJS
| 1 | {{each messages as message index}} | 
前台 ajax 请求
| 1 | $('#form').on('submit', function (e) { | 
后台 post 请求处理
? express 的 body-parser 中间件
配置中间键:
| 1 | app.use(bodyParser.urlencoded({ extended: false })); | 
日期格式化包:
| 1 | $ npm install moment --save | 
格式化日期方法:
| 1 | moment().format('YYYY-MM-DD HH:mm:ss') | 
后台处理 post 请求
| 1 | app.post('/message/add', (req, res, next) => { | 
响应给前台后,前台处理响应成功逻辑:
| 1 | // 是否成功由后台告诉前台 | 
注册登录模块
登录页面
注册页面
流程
添加表 users
| 索引 | 类型 | 长度 | 小数点 | 不是null | 主键 | 
|---|---|---|---|---|---|
| id | int | 50 | 空 | yes | yes | 
| username | varchar | 50 | 空 | yes | 空 | 
| password | varchar | 50 | 空 | yes | 空 | 
| varchar | 50 | 空 | yes | 空 | |
| create_time | datetime | 空 | 空 | yes | 空 | 
| last_signin_time | datetime | 空 | 空 | yes | 空 | 
处理注册页面后台逻辑
| 1 | // 注册请求处理(异步请求表单不会刷新) | 
处理注册页面前台逻辑
| 1 | $('form').on('submit', function (e) { | 
记住用户名(通过前台来写)
方法一:
安装插件:
| 1 | $ npm install js-cookie --save | 
设置 cookie:
| 1 | var username = Cookies.get('username'); | 
在 express 中使用 cookie-parser
安装:
| 1 | $ npm install cookie-parser --save | 
配置:
| 1 | const express = require('express'); | 
方法二:session 保持状态
session 和 cookie 结合使用。
在 express 中使用 session
安装:
| 1 | $ npm install express-session --save | 
配置:
| 1 | const express = require('express'); | 
处理用户注册和登录的状态
| 1 | $ npm install express-session --save | 
最终的 app.js
| 1 | // 引入包 | 
处理登录页面
最终的 singin.html
| 1 | <!-- ... --> | 
处理注册页面
最终的 singup.html
| 1 | 
 | 
数据库连接
连接数据库关键代码:db.js
| 1 | const mysql = require('mysql'); | 
css
| 1 | body { padding-top: 40px; padding-bottom: 40px; background-color: #eee; } | 
 
        