[关闭]
@Dale-Lin 2020-09-25T20:21:05.000000Z 字数 1869 阅读 540

Node.js 概述

Node.js标准


前言

Node 是 JS 语言的服务器运行环境。
官网:nodejs.org
仓库:Github

node.js 版本控制工具:nvm。
nvm 用来在一台机器上安装多个版本的 node.js:

  1. # 安装最新版本
  2. $ nvm install node
  3. # 安装指定版本
  4. $ nvm install 0.12.1
  5. # 使用最新版本
  6. $ nvm use node
  7. # 使用指定版本
  8. $ nvm use 0.12
  9. # 进入指定版本的 repl 环境
  10. $ nvm run 0.12
  11. # 退出激活的 nvm
  12. $ nvm deactivate
  13. # 查看本地安装的所有版本
  14. $ nvm ls
  15. # 查看服务器上所有可安装的版本
  16. $ nvm ls-remote

REPL

repl 指 Node.js 跟用户互动的 shell,使用 node 命令进入。
node --use_strict 在严格模式下运行。

特殊变量 _ 表示上一个命令的执行结果。

多行模式

  1. > .editor

取消当前处理进程

  1. > .break

退出 REPL

  1. > .exit

将当前 REPL 所有内容存到某个路径:

  1. > .save ./file/to/save.js

将某个文件加载到当前 REPL:

  1. > .load ./file/to/save.js

查看命令说明

  1. > .help

回调约定

Node 对异步操作的回调有一些约定:

异步操作执行回调时,前期的上下文跟错误执行栈已经不在,所以 error handle 必须在回调中。

全局对象和全局变量

Node 提供的全局对象:

Node 提供的全局函数:

Node 提供的全局变量:

异常处理

Node 是单线程运行环境,一旦错误没有被处理,就会引起进程的崩溃。
Node 有3种方法传播一个 Error:

使用 try...catch 语句处理异步行为的错误不可行(因为上下文问题)。
在 Node 中,有一些特殊的错误处理方式:

  1. process.on('uncaughtException', (err) => {
  2. console.error('err', err)
  3. // 正常退出应该是 exit(0)
  4. process.exit(1)
  5. })

配置了 uncaughtException 事件的回调函数后,Node 进程不会退出,但发生异常的上下文已经丢失,无法给出异常的详细信息。

  • 未处理的异常本质上意味着应用程序处于未定义状态。试图恢复应用程序代码而没有正确地从异常中恢复,可能会导致其他不可预见和不可预测的问题。
  • 从事件处理程序中抛出的异常将不会被捕获。相反,该进程将使用非零退出代码退出,并打印堆栈跟踪。这是为了避免无限递归。
  • 要以更可靠的方式重新启动崩溃的应用程序,无论是否发出“uncaughtException”,都应该在单独的进程中使用外部监控来检测应用程序故障,并根据需要进行恢复或重新启动。
  1. process.on('unhandledRejection', (reason, promise) => {
  2. // reason 是 reject(foo) 的 foo
  3. console.log('reason: ', reason, 'uncaught at: ', promise)
  4. })
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注