Node10新功能概览JavaScript开发人员今天一直在兴奋地等待,今天我们来看看这个版本带来的新功能。添加错误代码Node中的错误消息现已标准化。处理错误消息一直是Node环境中的一个痛点。以前,它们只包含一条字符串消息,没有关联其他标识符。如果开发人员希望程序根据特定的消息进行调试,唯一的方法就是对错误内容进行字符串比较。由于错误消息的处理需要精确的字符串匹配,因此即使是对消息的最小更新也不能添加到下一个主要节点版本,以免破坏SemVer。通过将错误与消息分离,这将使开发人员的工作更轻松,并允许Node在不引入破坏性更改的情况下改进错误消息。要了解更多信息,请阅读MichaelDawson的文章节点错误代码。N-API不再是实验性功能Node文档将N-API描述为用于构建本机插件的API。它独立于底层JavaScript运行时(exV8),并作为Node.js本身的一部分进行维护。该API将是一个跨Node.js版本稳定的应用程序二进制接口(ABI)。它旨在将Addons与底层JavaScript引擎的更改隔离开来,并允许为一个版本编译的模块无需重新编译即可在更高版本的Node.js上运行。N-API是在Node8中试验性引入的,从Node10开始稳定。在Node版本之间升级不再导致模块损坏。它还将向后移植以实现Node.jsv6.x和v8.x兼容性。NativeNodeHTTP/2变得更加稳定Node8引入了一个实验性的HTTP/2模块,这是对Node.js的一个很好的升级。HTTP/2改进了标准HTTP协议:多路复用单连接服务器推送优先级标头压缩一旦脱离实验阶段,原生HTTP/2模块将有助于改进节点服务器及其提供的Web体验。V8引擎v6.6性能改进Node在Chromium中停止使用V8JavaScript引擎,Node.jsv10使用最新版本的V8引擎。对于浏览器,Chrome66提供的V8引擎v6.6可以减少JavaScript解析和编译时间约20-40%。因此,我们可以期待Node10在这方面也有更大的收获。它还提供异步生成器和数组性能改进。速度很重要,最新版本不会让人失望。查看V8团队的文章以了解更多信息。更好地支持ES模块(ESM)//ESMimportpkgfrom“./pkg”exportdefault{a,b:2}vs.//CJSconstpkg=require(“./pkg”)module.exports={a,b:2}虽然我们没有看到Node10对ES模块的完全支持,但他们仍在努力。Node.js一直使用CommonJS(CJS),这是require和module.exports语法。在2015年史诗般的ES6版本中,引入了一个新的模块系统,ECMAScript模块(ESM)。作为ECMA的正式实现以及开发者的喜爱和广泛采用,Node一直致力于实现ESM规范。将ESM集成到Node中并不是一条完全顺利的路径,因为它与当前系统存在冲突。但是,对齐的能力非常重要,Node正在努力提供解决方案。如果您想了解更多信息,GilTayar就此主题写了一篇很棒的文章。改进的诊断跟踪Node10添加了跟踪事件,使开发人员能够更好地了解他们的Node.js应用程序。此新功能可以提供有关计时和性能问题的改进指标。API允许用户在运行时打开或关闭事件,以便根据需要诊断问题。启动节点应用时,添加参数--trace-event-categories开启,详细了解文档。配备npm6npm最近从v5.7升级到v6.0,Node10将立即提供更新。此版本的npm添加了所有各种改进,包括性能、安全性和稳定性。在他们的博客上了解更多关于npmv6的信息。升级到OpenSSL1.1.0版Node附带了对备受期待的ChaCha20密码和Poly1305验证器的现代密码学支持。TLS1.3最近已经完成,Node.jsv10将在10月份发布LTS时全面支持该标准。fs也可以承诺与文件系统交互是许多Node应用程序的主要部分,Node10将承诺发布fs包的实验版本。以前,这些函数通过回调处理异步操作,但可以使用Node8中包含的util.promisify()函数进行转换。现在,开发人员可以使用带有承诺的fs,而无需额外的步骤。原文https://levelup.gitconnected....
