• Node 10、12、14 版本的更新比对


    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 可以配置超过两个空格的长度。
  • 相关阅读:
    【七款炫酷的页面特效】
    【PHP环境-WampServer踩坑】
    【Elasticsearch在winodws系统启动报could not find java+闪退】
    【Vue-入门笔记-7】
    关于ios的光标和键盘回弹问题
    AES加密然后ajax传输数据
    文件进行MD5计算
    jqGrid 常用 总结 -2
    关于页面传参,decodeURI和decodeURIComponent
    js防抖和节流
  • 原文地址:https://www.cnblogs.com/everlose/p/12849721.html
Copyright © 2020-2023  润新知