Presentation is loading. Please wait.

Presentation is loading. Please wait.

Node.js专题 (2) 做一个留言板 2017/3/24 – Payne

Similar presentations


Presentation on theme: "Node.js专题 (2) 做一个留言板 2017/3/24 – Payne"— Presentation transcript:

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。


Download ppt "Node.js专题 (2) 做一个留言板 2017/3/24 – Payne"

Similar presentations


Ads by Google