Skip to main content

Node.js

Tips

  • 官方命名是 Node.js,为了方便,日常简称作 Node

  • 有问题应第一时间看官方文档,不要网上搜。

  • Node 基本上原生功能都够用,尽量用官方的库。

  • 官方文档:https://nodejs.org/zh-cn/docs/

  • 用 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 的使用技巧

文档:

部署新版前,先停掉删除已运行的应用

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 目录中,减少磁盘空间占用。