本來使用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 // 關閉