Node.js v6里有哪些新东西?
性能提升
- 模块加载性能比当前的LTS(Node.js v4)版本要快上4倍,不要误解是整体快4倍. 主要体现在应用引导入口状态的时间减少
- Updated V8 engine
安全提升
- Math.random - improved security, but note, that it is still not cryptographically secure
- For more information, check: http://v8project.blogspot.hu/2015/12/theres-mathrandom-and-then-theres.html
- New Buffer API to reduce the risk of bugs and vulnerabilities leaking into applications
新的ES6特性
Default function parameters
function multiply(a, b = 1) {
return a * b
}
multiply(5) // 5
Learn more on the default function parameters.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters
Rest parameters
function fun1(...theArgs) {
console.log(theArgs.length)
}
fun1() // 0
fun1(5) // 1
fun1(5, 6, 7) // 3
Learn more on the rest parameters.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/rest_parameters
Spread operator
// before the spread operator
function myFunction(x, y, z) { }
var args = [0, 1, 2]
myFunction.apply(null, args)
// with the spread operator
function myFunction(x, y, z) { }
var args = [0, 1, 2]
myFunction(...args)
Learn more on the spread operator.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator
Destructuring
var x = [1, 2, 3, 4, 5]
var [y, z] = x
console.log(y) // 1
console.log(z) // 2
Learn more on destructuring.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
new.target
function Foo() {
if (!new.target) throw 'Foo() must be called with new'
console.log('Foo instantiated with new')
}
Foo() // throws "Foo() must be called with new"
new Foo() // logs "Foo instantiated with new"
Learn more on the new.target.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target
Proxy
The Proxy object is used to define custom behavior for fundamental operations.
var handler = {
get: function(target, name){
return name in target ? target[name] : 37
}
};
var p = new Proxy({}, handler)
p.a = 1
p.b = undefined
console.log(p.a, p.b) // 1, undefined
console.log('c' in p, p.c) // false, 37
Learn more on proxies.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Reflect
Reflect is a built-in object that provides methods for interceptable JavaScript operations.
Learn more on reflect.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect
Symbols
A symbol is a unique and immutable data type and may be used as an identifier for object properties.
Symbol("foo") === Symbol("foo"); // false
Learn more on symbols.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol
尝试一下热乎的 Node.js v6吧
If you are using nvm, you only have to:
nvm install 6
If you for some reason cannot you nvm, you can download the binary from the official Node.js website.
什么时候可以迁移到Node 6呢?
今年10月份 Node.js v6 会升级到LTS 版本 - 那时你就可以正式的产品环境使用了,目前还不能确定完全稳定。
全文完
欢迎关注我的公众号【node全栈】
如果想参与评论,请点击原文链接,进入国内最专业的cnode论坛