如何評價 Node v6.0.0 (Current) ?
Node v6.0.0 (Current)
首先出 6.0 我們肯定是支持的。
最主要的是 v8 的升級。因為 node.js 在一個大版本里是基本不升級 v8 的,所以這次一升級,大家就突然感覺,擦咋 es2015 支持度一下子大躍進了?其實跟 Chrome 的發版節奏比,只是跟上了而已。
當然,es2015 支持度的提升是很好的,剩下還未支持的部分,要麼是小問題(如 function names 的一些特例),要麼是還沒什麼人用的特性(如 Symbol.species),要麼是可能在後續標準里被改掉的(如 tail calls),基本不礙事。
有人說還不支持 import/export 啊!所以結果還是要 babel。但實際上如果只需要處理 import/export ,你可以用 rollup 等輕量級方案。
不過有個坑爹的事情是,es2015特性雖然支持度非常高,但是性能優化還沒有跟上,比如略複雜一點的 let 就會讓函數無法被 optimize,而函數無法優化對性能影響巨大,簡單循環可以差10倍效率。這一點上,V8 做得比 Chakra(MS Edge 的 JS 引擎)差多了。Chakra 現在連 try-catch 也不會阻止函數優化了。
所以繞了一圈回來,如果你對性能要求很高,還是要用 babel 做一些編譯的。
再有,每次升級大版本,總是會有一堆 breaking changes。大多數情況下,你不太會遇到問題。但是一旦遇到就比較麻煩了。
這次甚至還有比較嚴重的問題,比如 Don"t resolve symlinks when requiring · Issue #3402 · nodejs/node · GitHub (從我的第一個 comment 開始看即可)。我已經提請 revert 掉相關的 PR 了。(update:終於決定revert了:Revert "module: preserve symlinks when requiring" by saper · Pull Request #6536 · nodejs/node · GitHub)
所以么,第一個吃螃蟹的總是需要勇氣的。如果是關鍵服務,建議還是等幾個月進入 LTS 為好。(即使如此,跟其他平台動不動等3、5年才升級已經是膽大包天了。)今天在微博看到好多人在轉發node6.0,本來覺得沒什麼,不就是版本更新嘛。出於好奇我運行了一下 node -v,發現我用的版本是0.12,當時我就震驚了。
是時候「鼓起勇氣」(找個版本不維護的借口)把老版本的node應用消滅掉了,一切放棄可維護性的安逸行為都是在給後面的人埋雷。
起碼你可以升級到lts啊。
Ps:我們正在朝著版本一致的目標努力。
APPEND: 或許應該老老實實先用require,順便考慮下如何把依賴用更合理的方式進行管理了。不過6.0小bug略多,暫時使用5.x也不失明智之選。據說ES6支持達到了93% 這點還是蠻誘惑人升級的
今早上升了 6.0,發現一些需要編譯的庫有點問題,就暫時回退到 5.9 了。
現在 4月27日,等5月27日我再進去吧。。。等那些庫都跟進一下V8的改動。
性能什麼的,我是從來不在乎的,從0.8開始。我用 js 除非是 http 庫的坑或者自己寫的內存泄露,否則 node 已經很快了。
es6 特性,在 6.0 不支持的 import 的情況下,大家還不是需要用 babel。所以也沒法因為升了 es6 就去掉 babel 啊。
在 node 6.0 下,React Native 0.22 的 packager 會炸:『Path must be a string. Received undefined』(沒測其他版本)
昨天用了下,自己的項目編譯各種報錯,然後就乖乖滾回了5..
主要是升級了下v8內核,跟上chrome節奏吧,基本是醬油版本。。es6方面import不支持該babel的還得babel
使用node開發的兄弟們現在最好先只是跟進學習,等10月份正式發布了再更新更科學吧。現在應該也不穩定啊。
推薦閱讀:
※一些網站能自動添加 URL 到 Safari 的閱讀列表,這是如何實現的?
※有哪些目前流行的前端框架?
※ES6的class關鍵字有沒有實現真正的面向對象?
※關於JS中this作為方法調用?
※如何評價 TypeScript 1.7?
TAG:JavaScript | Nodejs | V8 |