当前位置: 首页 > 后端技术 > Node.js

Node12有哪些值得关注的新特性?

时间:2023-04-03 20:23:38 Node.js

前言时隔一年,Node.js12如约而至,正式发布第一个Current版本。从2019年10月到2022年4月,它将进入长期支持(LTS)版本。此版本的新功能:V8更新带来了许多不错的功能。HTTP解析速度提高。启动速度有了很大的提升。更好的诊断报告和堆分析工具。ESM模块更新。LTSNode维护两条发布流程线:奇数版本在每年10月发布,偶数版本在第二年4月发布。当发布奇数版本时,最新的偶数版本将立即进入LTS维护计划,持续18个月(LTSStart)。然后会有12个月的延长维护期(MaintenanceStart)。这两个期间可以支持的变更是不同的:LTS期间支持的变更:错误修复、安全问题修复、文档更新、以及针对未来新特性的兼容性问题的更新。维护期间支持的更改:关键错误修复、关键安全问题修复或文档更新。偶数版本发布的时候,奇数版本只有2个月的维护期,之后只能乖乖升级。目前,Node.js6.x和8.x将在2019年底结束LTS支持,大家尽快升级到10.x。自从ESM导入/导出语法在ES6中标准化以来,ESM导入/导出语法一直是JavaScript开发人员的首选模块语法,Node团队一直在努力使其成为原生语法。实验性支持从第8阶段的Node8.0开始,并在最新的Node版本中向前迈出了重要一步。所有主流浏览器都支持ECMAScript模块,因此这是Node.js的一个巨大更新。//defaultexportsimportmodulefrom'module'//namedexportsimport{namedExport}from'module'//namespaceexportsimport*asmodulefrom'module'V8引擎更新到7.4这个版本更新还带来了几个不错的特性:异步调用速度堆栈跟踪参数不匹配时的优化调用更快JavaScript解析更快awaitECMAScript新特性支持随着V8的更新,也实现了许多新的ES规范,比如支持类的私有变量。类问候{#name='世界';得到名字(){返回这个。#name;}setname(name){this.#name=name;}sayHello(){console.log(`你好,${this.#name}`);}}在类外或者去#name变量会抛出异常提高启动性能Node将为内置库构建代码缓存,并在构建之前将它们作为二进制文件嵌入。主线程能够使用这个代码缓存,将启动时间减少30%。改进的HTTP解析速度将默认HTTP解析器切换为llhttp以显着提高性能TLS和安全性Node12现在支持TLS1.3,它提供更高的安全性和更低的延迟。TLS1.3是对该协议的一次重大更新,并正在通过网络积极集成。通过实施TLS1.3,Node应用程序将增加最终用户的隐私,同时通过减少HTTPS握手所需的时间来提高请求性能。此外,默认情况下已禁用TLS1.0和1.1,并且加密库已删除不推荐使用的功能。堆大小分配策略过去使用默认的V8堆大小,相当于700MB(32位系统)或1400MB(64位系统)。Node现在将根据可用内存确定堆大小,这将确保它不会使用超过允许的资源。堆转储功能Node12提供了生成堆转储的功能,使调查内存问题变得更加容易。其他值得注意的更新工作线程不再需要标志http已将其默认解析器更新为llhttpassert验证所需的参数并调整松散的断言缓冲区改进以使其更加稳定和安全async_hooks删除了弃用的功能