前言
Node.js于5月30号在其官方博客上发布了Node.js v8.0.0。这一版本将成为当前的长期维护版本,从2017年10月开始到2019年12月31号。而Node.js v6.0.0将会在2018年4月进入维护模式,并于2019年4月结束。
最新发布的版本代号为Carbon,带来了很多重要的特性改进和一些全新的特性。
引入async_hooks模块
新引入实验性模块async_hooks(之前叫作async_wrap),它包含了一组用于诊断的API,开发人员可以用它监控Node.js事件循环里的各种操作,跟踪句柄对象全生命周期的事件。可以通过该模块的createHooks方法注册用于处理句柄对象生命周期各个阶段事件的函数。
const asyncHooks = require('async_hooks') asyncHooks.createHooks({ init, pre, post, destroy })
更多关于这个新模块的内容可以查看文档和它的开发进度情况。
引入N-API
Node.js API(N-API)为开发人员提供了一组新的实验性API,用于开发原生插件。它独立于底层的JavaScript运行时,并作为Node.js的一部分进行维护。引入N-API的主要目的是提供一套与虚拟机无关的应用二进制接口(ABA),这样插件只要编译一次就可以运行在各种版本的Node.js上,甚至包括来自其他公司的虚拟机,比如微软的Chakra Core。
N-API也是一个实验特性,更多有关N-API的信息可以参考官方文档。开发人员现在就可以使用这套API,并可以提供反馈以便更好地改进API。
Buffer安全性的改进
在v8.0.0之前,Buffer是通过new Buffer(num)方法来分配的,并没有使用零值来初始化内存空间,新建的Buffer对象可能包含敏感数据,会导致安全问题。
不过,使用Buffer(num)构造函数创建出来的对象对性能有一点影响,如果开发人员更加看重性能,那么可以使用Buffer.allocUnsafe(num)来创建一个未初始化内存的对象。
// 使用零值初始化过的对象 const safeBuffer1 = Buffer.alloc(10); const safeBuffer2 = new Buffer(10); // 未初始化的对象 const unsafeBuffer = Buffer.allocUnsafe(10);
升级V8引擎到5.8版本
升级V8引擎带来了更好的性能和更多面向开发人员的API。V8 5.8可以保证ABA兼容5.9和即将到来的6.0,从而确保Node.js原生插件的稳定性。后续还会逐步将引擎升级到5.9和6.0。
升级引擎还意味着新的编译器管道——TurboFan和Ignition。Ignition是V8引擎的解释器,TurboFan是优化编译器,虽然它们在之前就已存在,但把它们作为默认的组合还是首次(将在V8 5.9里实现)。这是一个重大的转变,将为性能带来极大的提升。
升级npm到5.0.0
Node.js v8.0.0包含了最新的npm 5.0.0,其主要特性如下。
更多有关npm 5.0.0的新特性可以参考npm的文档。
Node.js v8.0.0还包括子进程、控制台、文件系统、流、HTTP、TLS、URL等方面的改进。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍Linux 4.9内核正式发布!来看看更新了什么?,包括了Linux 4.9内核正式发布!来看看更新了什么?的使用技巧和注意事项,需要的朋友参考一下 前言 在历经8个rc版本之后,Linux 4.9版本的内核于2016年12月11日如期与大家见面。根据Linux的创始人Linus Torvalds的声明,Linux Kernel 4.9分支会是一个重大的版本更新,其间会经过8个研发版
本文向大家介绍NodeJs的特性主要有哪些?相关面试题,主要包含被问及NodeJs的特性主要有哪些?时的应答技巧和注意事项,需要的朋友参考一下 单线程,单线程的好处,减少了内存开销,操作系统的内存换页。 非阻塞I/O, 不会傻等I/O语句结束,而会执行后面的语句。 事件机制,事件环,不管是新用户的请求,还是老用户的I/O完成,都将以事件方式加入事件环,等待调度。
通过sysconstraints只能看到一个{tab_id}_{id}字符串. 无法确认这个主键用了哪些列
招人标准 先说下我的招人标准,做技术总监时上指下派只要看好技术能力和态度即可,做CTO时要考虑团队文化,人品和能否在公司长留,所以不同的人面试要看的点是不一样的,我曾面过很多Node.js程序员,也见过很多面试题,汇总一下,大致有以下9个点: 基本的Node.js几个特性,比如事件驱动、非阻塞I/O、Stream等 异步流程控制相关,Promise是必问的 掌握1种以上Web框架,比如Expres
如何在jenkins web用户界面中找到共享公共锁的作业? (我的意思是没有访问jenkins的文件系统) 更新:例如,作业“编译”、“测试”和“部署”共享一个锁,以避免其中一个在另一个运行时启动。
当我们第一次谈到 Functor 的时候,我们了解到他是一个抽象概念,代表是一种可以被 map over 的值。然后我们再将其概念提升到 Applicative Functor,他代表一种带有 context 的型态,我们可以用函数操作他而且同时还保有他的 context。 在这一章,我们会学到 Monad,基本上他是一种加强版的 Applicative Functor,正如 Applicativ