5月30日12:00,Node.js8正式发布。该版本有一系列新特性和性能改进,这些特性和改进将获得长期支持(LTS)。以下是Node.js8版本中最重要的功能和修复。新版本的代号是Carbon。Node.js8将从2017年10月到2019年12月31日正式成为当前的LTS版本。这也意味着Node.js6版本将在2018年4月进入维护模式,并在2019年4月结束维护支持。下载Node.js8版本:https://nodejs.org/download/rc/v8.0.0-rc.2/AsyncHooksAPI简介AsyncHooks(以前称为AsyncWrap)API允许获取有关句柄对象生命周期的结构跟踪信息。API发送的消息会告知消费者Node.js中所有handle对象的生命周期。它试图解决类似于continuation-local-storagenpm包的问题。如果您正在使用continuation-local-storage,您已经可以使用名为cls-hook的异步挂钩-现在不是使用异步挂钩的最佳时机,因此请谨慎使用!AsyncHooksAPI在Node.js8中的工作原理createHooks函数为每个异步操作注册要由不同生命周期事件调用的函数。constasyncHooks=require('async_hooks')asyncHooks.createHooks({init,pre,post,destroy})这些函数将根据处理程序对象的生命周期事件有选择地触发。N-API简介N-API是一种用于构建原生插件的API。它独立于底层JavaScript运行时,并作为Node.js本身的一部分进行维护。这样做的目的是保持应用程序二进制接口(ABI)在Node.js版本中的稳定性。N-API的目的是将add-ons与底层JavaScript引擎的变化分开,使得原生add-ons可以在不同的Node.js版本上运行而无需重新编译。Node.js8中的缓冲区安全改进在Node.js8版本之前,使用newBuffer(Number)构造函数分配的缓冲区不会使用ZEROS初始化内存空间。因此,新的Buffer实例可能包含敏感信息,这很容易导致安全问题。虽然这是为了提高创建新缓冲区的性能的决定,但对于大多数人来说,它并不打算以这种方式使用。所以从Node.js8开始,使用newBuffer(Number)或Buffer(Number)分配的缓冲区将自动填充为零。V8升级到5.8:TurboFan&Ingnition使用Node.js版本8,底层的V8JavaScript引擎也进行了更新。对于Node.js用户来说,最大的变化是引入了TurboFan和Ignition。Ignition是V8的解释器,TurboFan是优化编译器。”Ignition和TurboFan的联合使用已经发展了近3?年,代表了V8团队集体理解的最终结果。它是V8团队收集JavaScript实测性能和仔细分析Full缺点的结果-codegen和Crankshaft。它也是未来几年继续优化JavaScript语言系统的基础。”-DanielClifford和V8团队V8的当前编译管道如下图所示。这个流水线最大的问题是新的语言特性必须在流水线的不同部分实现,这增加了很多额外的开发工作。下面是一个没有FullCodeGenerator和Crankshaft的简化流水线:新的流水线大大减轻了V8团队的技术负担,并实现了许多以前不可能实现的改进。了解有关TurboFan和Ignition以及TurboFan内联启发式方法的更多信息。将npm升级到5.0.0新的Node.js8版本还附带了npm5——最新版本的npmCLI。新npm版本的亮点:一个新的标准化锁定文件功能,用于跨包管理器(package-lock.json)的兼容性,以及shrinkwrap--save的新格式和语义不再是必需的,因为默认情况下所有安装都会保存node-gyp现在支持Windows新版本的node-gyp.cmd将包括sha512和sha1校验和Node.js8版本中的其他显着变化BufferBuffer方法现在接受Uint8Array作为输入子ProcessArgument和Kill信号验证改进的子进程方法接受Uint8Array作为输入错误事件使用控制台方法时现在禁止发送DomainsNativePromise实例现在是域感知文件系统实用程序类fs.SyncWriteStream已被弃用已弃用的fs.read()字符串接口已被删除HTTP溢出Cookie标头将被连接成一个字符串httpResponse.writeHeader()方法已被弃用StreamStream现在支持destroy()和_destroy()APITLSrejectUnauthorized选项现在默认为trueURLWHATWGURL实现现在完全受Node.jsAPI支持Node.js8接下来要做什么我们很兴奋关于Node.js8版本,因为它包含许多有趣的增强功能,例如异步挂钩API,在当前的文档状态下很难掌握。我们将尽快开始使用新版本,并尽快为用户提供更详细的新功能说明。在众多支持node.js的产品中,值得一提的是Wijmo,它是一套包含HTML5和JavaScript的企业应用开发控件。无论您的应用是移动端、PC端,还是必须支持IE6,WijmoEnterprise都能满足您的需求。
