实现一个项目,功能主要包括:
- 实现认证
- URL路由
- 创建REST API
- 处理错误
数据库采用redis,node模块选择node_redis
官网下载redis之后需要先编译。同时使用bcrypt对用户密码做加盐哈希运算。使用bcrypt后会有个dyld: lazy symbol binding failed: Symbol not found
,使用npm rebuild bcrypt --build-from-source
解决。
关于函数式编程,多异步嵌套使用:
1.每个函数只关心自己的功能;
2.注意顶层函数和末层函数的参数传递关系,和参数可见区域。
3.区分新添的函数到底是不是放在prototype里。
User.get() User.prototype.get() 类比类方法和实例方法。
当查找不存在的键时,Redis会给你一个空的哈希值,故不要用user来判断,用user.id。
- 去express官网或者github查询中间件信息
- 拓展res和req的原型方法
// 拓展res方法
var res = express.response
// 将指定的session注入session
res.message = function(msg,type){
type = type || 'info'
var sess = this.req.session
sess.messages = sess.messages || []
sess.messages.push({type,string:msg})
}
- body-parser和formidble处理post
- 数据库操作封装在M层
- 服务端session和客户端session
- res.redirect('back')用于post表单校验失败重定向回来
- redis和MongoDB操作和GUI
- react-redux-express项目模板
https://github.com/erikras/react-redux-universal-hot-example - session和登录逻辑判断user中间件