Node.js
Tips
-
官方命名是
Node.js,为了方便,日常简称作Node。 -
有问题应第一时间看官方文档,不要网上搜。
-
Node 基本上原生功能都够用,尽量用官方的库。
-
用 Node 的好处是高度自定义,灵活,轻量。
-
模块引入只用
require()。相信未来一定会原生支持import...from...的,并且 Node 已经支持我们日常用到的 ES6 特性,没有必要为了一个 import 语法而用 webpack + blade 做二次编译。 -
开发环境和生产环境的 node 版本要完全统一,同时尽量不要用最新版,很多依赖项都不会及时的支持最新版,最新也只能使用 LTS 版。
基础框架用 Koa
基础框架从 Koa 开始,不要直接用 Express,可以将 Koa 当做 Express 的增强版(例如支持异步编程,不用特意组织代码即可防止地狱嵌套的问题)。
不要同时用 Koa 和 Express。Express 自带很多 Koa 没有的功能,尽量找 koa-xxx 代替使用。
参考:
代码热更新 Nodemon
不用 Gulp 了,跟大队。
dotenv 读取 .env 文件加载环境变量
https://www.npmjs.com/package/dotenv
在命令行使用 node 做一次性 md5 加密
在本地灵活使用 node 交互命令行,可以带来很多便利。
例如,要做 md5 加密一段 字符串,可以这样做:
npm install md5
node
> require('md5')('IFLJh9qF')
通过 nodemon 监听文件修改并自动重启 node 应用
官网 https://nodemon.io/ 不过很慢。
Node 应用的部署以及管理
关于生产环境的 Node 应用部署以及管理,有两大方式:
- 方式一 - 打包成 Docker 镜像,后期当做一个 Docker 应用去管理。
- 方式二 - 直接使用生产环境的 Node 运行应用。
此处将讲解方式二。
同一个 Node 环境中运行多个应用,必然要做好进程管理。
进程管理可用 supervisor 等 Linux 老牌工具(此前在与 Docker 使用相关的文档中有介绍过)。
也可使用针对 Node 应用的新晋工具。
对比 Node 的三大进程管理工具:http://strong-pm.io/compare/
综合起来,基于 Node 使用 pm2 最适中。
pm2 start --name $THE_NAME server.js
Node 部署工具 pm2 的使用技巧
文档:
- npm https://www.npmjs.com/package/pm2
- GitHub https://github.com/Unitech/pm2
- 官网 https://pm2.keymetrics.io/
部署新版前,先停掉删除已运行的应用
pm2 stop $THE_NAME || echo 'stop fail'
pm2 delete $THE_NAME || echo 'delete fail'
要注意此前应用不一定已存在。
若自动部署脚本使用 pm2,要保证该行命令不会报 exit 1 防止脚本被中断执行。
快速启动一个 http 服务
npm install --global http-server
使用方法:https://www.npmjs.com/package/http-server#usage
注意,如果 NODE_ENV=production
更换国内镜像源
npm config set registry https://registry.npmmirror.com
npm ci --omit=dev
package.json 中 dev 的依赖项不会安装到 node_modules 目录中,减少磁盘空间占用。