Download presentation
Presentation is loading. Please wait.
1
Node.js专题 (2) 做一个留言板 2017/3/24 – Payne
网络协会2017培训 Node.js专题 (2) 做一个留言板 2017/3/24 – Payne
2
留言板基础需求 1. 查看留言版的内容,支持翻页 2. 访客匿名留言 3. 和谐词简单过滤 4. 允许管理员登录,管理留言内容(屏蔽)
3
留言板参考 backend.git
4
留言板参考技术 前端: 1. JS + JSON 2. AJAX (XHR) 后端: 1. Node.js + Express
2. MongoDB
5
项目目录结构 -> common 通用函数 -> controllers 控制器 【具体的页面/接口逻辑】
-> models 数据模型 【对接数据库】 -> views 前端界面模板 (WebAPP不需要) -> public 前端静态文件夹 (采用CDN可以不需要) -> proxy / services 代理层 (业务不复杂的项目不需要) -> routes 路由表 app.js 主程序入口 package.json Node.js 项目配置文件
6
数据库的设计
7
留言板的数据库结构 1. 留言表 Message Table 2. 账号表 User Table
8
留言表的数据结构 1. from <ObjectID> 留言人ID 2. content <String> 留言内容
3. deleted <Boolean> 是否被删除 4. deletedReason <String> 删除原因 5. ip <Number> 留言人IP 6. createdAt <Date> 留言时间
9
账号表的数据结构 1. username <String> 用户名
2. password <String> 密码Hash 3. salt <String> 盐值 4. nickname <String> 昵称 5. role <Number> 角色ID 6. <String> 邮箱地址 7. deleted <Boolean> 是否被删除 8. createdAt <Date> 注册时间
10
按照数据结构写Models
11
功能接口设计
12
目标 由于前后端分离的需要,前端与后端的沟通完全依 靠XHR (AJAX)或者Fetch访问JSON的接口。
13
控制器 1. 留言 Message (/message) 2. 用户 User (/user)
14
留言控制器 方法: 1. 发布留言 - /post – POST 2. 获取留言列表 - /list - POST
3. 管理员删除留言 - /remove - POST
15
用户控制器 方法: 1. 注册 - /register – POST 2. 登录 - /login - POST
3. 管理员屏蔽用户 - /ban - POST
16
小例子 — 登录 user/login 接口URI:/users/login 采用POST方法。 传入参数有:
1. username 用户名 2. password 明文密码 输出对象: 1. userInfo 登录用户的信息 (返回昵称等信息)
17
小例子 — 登录 user/login 权限检查中间件 登录控制器 通用数据返回
18
获取uesername和password
小例子 — 登录 user/login 获取uesername和password 获取username对应的用户信息 校验密码(hash) 存储session
19
小例子 — 登录 user/login 需要使用EventProxy组织执行顺序。 ep.once, ep.doneLater, ep.emitLater 可以看上一次培训复习
20
注册 user/register 接口URI:/users/register 采用POST方法。 传入参数有:
1. username 用户名 2. password 明文密码 3. nickname 昵称 4. 邮箱 输出对象: 成功状态
21
注册 user/register 获取注册需要参数 检测数据合法性 检测重复用户名和昵称等 生成salt和hash 保存用户信息
22
管理员屏蔽用户 user/ban 接口URI:/users/ban 采用POST方法。 传入参数有: 1. user_id 目标用户ID
输出对象: 成功状态 需要用到 MongoDB 的 update
23
管理员屏蔽用户 user/ban 权限检查中间件 (非管理员则禁止访问) 用户屏蔽控制器 通用数据返回
24
管理员屏蔽用户 user/ban 获取user_id 检测用户状态 更新用户状态为屏蔽/正常
25
获取留言列表 message/list 接口URI:/message/list 采用POST方法。 传入参数有: 1. page 页码
输出对象: 对应页码的留言的数组 需要用到 MongoDB 的 find
26
发布留言 message/post 接口URI:/message/post 采用POST方法。 传入参数有: 1. content 留言内容
输出对象: 成功状态 需要用到 MongoDB 的 Model.save
27
发布留言 message/post 权限检查中间件 (非登录用户则禁止访问) 发布留言控制器 通用数据返回
28
前端页面设计
29
概要 时间紧迫,不使用特殊的框架。 通过XHR/Fetch访问接口。 采用单页面WebAPP。
Similar presentations