总体架构
开发环境搭建
使用webstorm进行开发,新建项目,发现没有nodejs智能提示
安装node智能提示
通过npm init新建项目
两个好用的插件:
全局安装nodemon,支持热重载
项目安装cross-env,兼容操作系统
配置package.json的script选项
配置中的NODE_ENV=dev,当以npm run dev启动时,process.env.NODE_ENV的值就为dev
1 | "dev": "cross-env NODE_ENV=dev nodemon ./bin/www.js", |
设计接口
响应结构设计
1 | //成功 |
通过es6的class新建响应模型
1 | class BaseModel { |
项目结构拆分
将启动服务器封装成www.js,外部传入服务器响应函数
响应函数在app.js中进行定义,函数中都可以引用req,res对象
对路由进行拆分,博客路由和用户路由,在app.js中进行引用
app.js中引用路由对所有请求拦截处理,有对应路由返回数据否则返回404
新建controller文件夹,主要用于操作数据,然后在router中引用对应controller中的方法
router中调用controller方法获得数据,封装成响应model并返回数据
新增配置文件,配置mysql和redis链接信息
封装mysql链接工具,封装执行sql函数
对promise的一些疑惑
碰到的一些小bug
sql语句定义的不规范,${username}应该要加上引号
1 | const sql = `select username, realname from user where username=${username} and password=${password}` |
日志系统
1.访问日志
2.自定义日志,包括自定义事件,错误记录等
通过流对象写日志
日志的拆分,按照天等(通常用linux的定时任务crontab)
sql注入的d防范
使用mysql的escape函数,所有的字段先用escape转义
然后dadaw${xxx}
中的${xx}就不用加引号了
npm xss模块