@Dale-Lin
2020-09-25T20:21:05.000000Z
字数 1869
阅读 540
Node.js标准
Node 是 JS 语言的服务器运行环境。
官网:nodejs.org
仓库:Github
node.js 版本控制工具:nvm。
nvm 用来在一台机器上安装多个版本的 node.js:
# 安装最新版本
$ nvm install node
# 安装指定版本
$ nvm install 0.12.1
# 使用最新版本
$ nvm use node
# 使用指定版本
$ nvm use 0.12
# 进入指定版本的 repl 环境
$ nvm run 0.12
# 退出激活的 nvm
$ nvm deactivate
# 查看本地安装的所有版本
$ nvm ls
# 查看服务器上所有可安装的版本
$ nvm ls-remote
repl 指 Node.js 跟用户互动的 shell,使用 node
命令进入。
node --use_strict
在严格模式下运行。
特殊变量 _
表示上一个命令的执行结果。
多行模式
> .editor
取消当前处理进程
> .break
退出 REPL
> .exit
将当前 REPL 所有内容存到某个路径:
> .save ./file/to/save.js
将某个文件加载到当前 REPL:
> .load ./file/to/save.js
查看命令说明
> .help
Node 对异步操作的回调有一些约定:
异步操作执行回调时,前期的上下文跟错误执行栈已经不在,所以 error handle 必须在回调中。
Node 提供的全局对象:
global:Node 所在的全局环境。
var
声明的变量不会挂载到 global 上,因为变量只属于某个私有模块。var
声明的变量会挂载到 global 上,此时 global 类似浏览器中的 window。process:Node 所处的进程,允许开发者与该进程互动。
Node 提供的全局函数:
Unit8Array
。Node 提供的全局变量:
Node 是单线程运行环境,一旦错误没有被处理,就会引起进程的崩溃。
Node 有3种方法传播一个 Error:
使用 try...catch 语句处理异步行为的错误不可行(因为上下文问题)。
在 Node 中,有一些特殊的错误处理方式:
process.on('uncaughtException', (err) => {
console.error('err', err)
// 正常退出应该是 exit(0)
process.exit(1)
})
配置了 uncaughtException 事件的回调函数后,Node 进程不会退出,但发生异常的上下文已经丢失,无法给出异常的详细信息。
- 未处理的异常本质上意味着应用程序处于未定义状态。试图恢复应用程序代码而没有正确地从异常中恢复,可能会导致其他不可预见和不可预测的问题。
- 从事件处理程序中抛出的异常将不会被捕获。相反,该进程将使用非零退出代码退出,并打印堆栈跟踪。这是为了避免无限递归。
- 要以更可靠的方式重新启动崩溃的应用程序,无论是否发出“uncaughtException”,都应该在单独的进程中使用外部监控来检测应用程序故障,并根据需要进行恢复或重新启动。
process.on('unhandledRejection', (reason, promise) => {
// reason 是 reject(foo) 的 foo
console.log('reason: ', reason, 'uncaught at: ', promise)
})