本来使用php写的一个项目,随着访问量增大,性能出现问题,原本考虑将Php从5.6升级到7.3看能不能获得解决,可是看了一些文章,说node在这些方面更出色(我本身没有验证,边写边验证),加上本身前端方面更擅长,因此决定使用koa来重写项目。正好把一些边角料知识串了一串,这里把整个项目过程当中遇到的问题记录一遍。javascript
登陆
参考php
// 使用koa-session // 检验登陆
中间件处事能用功能
中间件通常就是对ctx作扩展,好比增长各类统一返回的处理函数。前端
我想直接扩展context的原型,这样不用每一个访问都从新加载这些函数,因而我找到这个 扩展contex. 但在扩展中拿到运行时的实例(this)有些问题,待研究。java
先后端分离
开发时使用nodemon起服务,部署时使用pm2. 在启动程序时分别传入环境变量区分,加载不一样的前端资源便可:node
事务
sequelize支持事务,官方代码以下:mysql
return sequelize.transaction(t => { // chain all your queries here. make sure you return them. return User.create({ firstName: 'Abraham', lastName: 'Lincoln' }, {transaction: t}).then(user => { return user.setShooter({ firstName: 'John', lastName: 'Boothe' }, {transaction: t}); }); }).then(result => { // Transaction has been committed // result is whatever the result of the promise chain returned to the transaction callback }).catch(err => { // Transaction has been rolled back // err is whatever rejected the promise chain returned to the transaction callback });
比较简单明了。git
坑爹的修改结果集
sequelize返回的结果集须要处理下让接口返回,结果不管如何修改都不生效,气爆炸,最后才发现缘由它的结果集必需要用特定方法才能修改字段: setDataValuegithub
// Date // Datetime // Timestamp
项目达到部署使用有一系列问题须要解决,这里先记录,再逐步解决sql
推送哪些内容?npm
npm install -g pm2 pm2 start app.js // 启动 pm2 start app.js -i max //启动 使用全部CPU核心的集群 pm2 stop app.js // 中止 pm2 stop all // 中止全部 pm2 restart app.js // 重启 pm2 restart all // 重启全部 pm2 delete app.js // 关闭