Node 101214 版本的更新比对

Posted everlose

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node 101214 版本的更新比对相关的知识,希望对你有一定的参考价值。

Node 10

参见 Node CHANGELOG_V10

  • vm: add dynamic import support。支持动态的 import。

但 ES 模块仍旧属于实验性质,并不能在代码中直接使用 import/export 除非开启实验性质的 flag,想使用还是得参见如何在 NodeJS 中写 ES6 import

  • Updated nghttp2 to 1.34.0. This adds RFC 8441 extended connect protocol support to allow use of WebSockets over HTTP/2。将 nghttp2 更新为 1.34.0。这增加了 RFC 8441 扩展连接协议支持,以允许通过 HTTP/2 使用 WebSockets。

Node 8 引入了一个实验性的 HTTP/2 模块,这次是对 Node 的一次很好的升级。 HTTP/2 改进了标准的 HTTP 协议,有着多路复用,单一连接,服务器推送,头压缩等先进处,此次还修复了一些安全性的问题,并且还加上 websocket 的支持。

  • Adding Error Codes。现在,Node中的错误信息已被标准化。
  • The n-api is no longer experimental. [cd7d7b15c1]。N-API 不再是实验性功能

Node文档将 N-API 描述为构建本地插件的 API。 它独立于底层的 javascript 运行时(ex V8),并作为 Node.js 本身的一部分进行维护。 这个 API 将是跨 Node.js 版本稳定的应用程序二进制接口(ABI)。 它旨在将 Addons 与基础 JavaScript 引擎中的更改隔离,并允许为一个版本编译的模块在更高版本的 Node.js 上运行,而无需重新编译。

  • patch V8 to 6.6.346.24。Node 停止使用 Chromium 中的 V8 引擎,而使用 v8 的 6.6 版本,

  • 改进了诊断追踪。Node 10 添加了跟踪事件,为开发人员提供更多关于其Node.js应用程序可见性。在启动 node 应用时,添加参数 --trace-event-categories可以将其打开,可以文档里了解到更多

  • update npm to 6.14.3。更新 NPM 6,npm的这一版本增加了所有各种改进,包括性能,安全性和稳定性

  • upgrade openssl sources to 1.1.1e。Node配备了现代加密支持,可支持备受期待的 ChaCha20 密码和 Poly1305 验证器

  • fs: remove experimental warning for fs.promises。fs 可直接使用 promise 了,不再需要像 Node 8 中使用 util.promisify()函数进行转换。

const fs = require(‘fs‘);
const fsPromises = fs.promises;

// 同步读取
console.log(fs.readFileSync(‘temp.txt‘, ‘utf8‘));

// promise 读取,感觉更麻烦了。

async function doRead() {
  let filehandle = null;
  try {
    filehandle = await fsPromises.open(‘temp.txt‘, ‘r+‘);
    let read = await filehandle.readFile();
    console.log(read);
  } finally {
    if (filehandle) {
      // 如果文件已打开,则关闭文件。
      await filehandle.close();
    }
  }
}

doRead().catch(console.error);

Node 12

参见 Node CHANGELOG_V12

  • update V8 to 7.4.288.13。其中可以使用 Async 调用栈追踪了。
  • 集成 Heap Dumps,打印堆快照功能,方便定位内存泄漏。参加util: integrate node-heapdump into core 获取更多信息
  • properly configure default heap limits,使用更合适的默认堆内存限制。V8 会使用默认的的方案(32位系统上是 700MB 的限制,64位系统则是 1400MB,当然会检测机器是否有这么高的内存,没有的会也会缩减占用)根据可用内存来配置堆内存限制确保了 Node.js 不会因为使用超出可用内存而导致异常退出。这在处理大型数据集时特别有用。和以前一样,如果默认值不适合您的应用程序,通过设置 max-old-space-size 仍然可以使用不同的限制。
  • switch default parser to llhttp (Anna Henningsen)。使用 llhttp 替换了默认的 http 解析器。并且 llhttp 的版本是 2.0.4。llhttp 在 v11.2.0 中首次作为llhttp experimental 引入,在此版本中,llhttp 将不再作为 experimental。有关于 llhttp,参见llhttp是如何使Node.js性能翻倍的?
  • Worker Threads,Worker Threads 已经不再需要 flag 了。
  • Node.js 12 带来了支持 ES6 Module 的最新实验版本。但仍旧不能直接在代码里使用它,想使用还是得参见如何在 NodeJS 中写 ES6 import

Node 14

参见 Node CHANGELOG_V14

  • ECMAScript Modules - Experimental Warning Removal

In Node.js 13 we removed the need to include the --experimental-modules flag, but when running EcmaScript Modules in Node.js, this would still result in a warning ExperimentalWarning: The ESM module loader is experimental.

自 Node 13 开始可以直接使用 ES Modules 但是会报警,Node 14 后可以使用并且不报警了。

  • V8 升级到 8.1
  • ArrayBuffer 使用新的 V8 ArrayBuffer API
  • openssl sources 更新到 1.1.1
  • Console groupIndentation option。console 可以配置超过两个空格的长度。

以上是关于Node 101214 版本的更新比对的主要内容,如果未能解决你的问题,请参考以下文章

node_modules中依赖的版本更新

node_modules中依赖的版本更新

vscode代码片段建议bug

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

版本更新被拒绝解决方案

Node.js JavaScript 片段中的跳过代码