1. 使用koa2 和 express 对比
- express中间件是异步回调,koa2原生支持async/awit
- 新开发的框架和系统,都开始基于koa2,例如ess.js
- express虽然为过时,但是koaw肯定是未来趋势
2. 介绍async/await
1 2 3 4 | 1. await 后面可以追加 promise 对象,获取resolve 的值 2. await 必须包裹在 async 函数里面 3. async 函数执行返回的也是一个promise 4. try-catch 截获Promise 中的reject 的值 |
3. 介绍koa2
- 安装(使用脚手架)
- npm install -g koa-generator
- Koa2 koa2--test
- npm install & npm run dev
- 初始化代码,处理路由
- 使用中间件
3.1 实现session
- 和express 类似
- 基于koa-generic-session 和 koa-redis
1cnpm i koa-generic-session koa-redis redis --save
3.2 开发路由
- 复用之前代码,如mysql,登录中间件,controller,model
- 初始化路由,前端联调
1 | cnpm i mysql xss --save |
3.3 日志
- access log 记录,使用morgan
1 | npm i koa-morgan --save |
- 自定义日志使用console.log 和 console.error
- 日志拆分、日志内存分析
4. 中间件原理分析
- 洋葱圈模型
- Request ---> Response
- 分析
- app.use 用来注册中间件,先收集起来
- 实现next机制,即上一个next触发下一个
- 不涉及method 和 path 判断
5. 进程守护 pm2
PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
- node app.js 和 nodemon app.js 进程崩溃则不能访问
- pm2 遇到进程崩溃,会自动重启
- pm2需要全局安装
npm install -g pm2
5.1 常用配置 pm2
- 新建pm2 配置文件(包括进程数量,日志文件目录等)
- 修改pm2 启动命令,重启
- 访问server, 检查日志文件的内容(日志记录是否生效)
5.2 pm2 常用命令
- 启动进程/应用
pm2 start bin/www 或 pm2 start app.js - 重命名进程/应用
pm2 start app.js --name wb123 - 添加进程/应用
watch pm2 start bin/www --watch - 结束进程/应用
pm2 stop www - 结束所有进程/应用
pm2 stop all - 删除进程/应用
pm2 delete www - 删除所有进程/应用
pm2 delete all - 列出所有进程/应用
pm2 list - 查看某个进程/应用具体情况
pm2 describe www - 查看进程/应用的资源消耗情况
pm2 monit - 查看pm2的日志
pm2 logs - 若要查看某个进程/应用的日志,使用
pm2 logs www - 重新启动进程/应用
pm2 restart www - 重新启动所有进程/应用
pm2 restart all
6. 多进程
- 为什么使用多进程
- 操作系统会限制一个进程的最大可用内存
- 内存:无法充分利用机器的全部内存
- CPU:无法充分利用多核CPU的优势
- 多进程redis
- 多进程之间,内存无法共享
- 多进程访问一个redis,实现数据共享
7. 上线与配置总结
-
服务器运维,一般由专业的OP人员和部门来处理
-
大公司都有自己的运维团队
-
中小型工期推荐使用一些云服务,如华为云的node平台
-
pm2的核心价值 进程守护
-
pm2的常用命令和配置,日志记录
-
多进程
koa2_blogs
项目来源于imooc.com
前端晋升全栈工程师必备课程
Node.js 从零开发web server博客项目
https://coding.imooc.com/learn/list/320.html
- 仅供学习参考交流使用。