iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
1
Modern Web

從零開始認識 Node.js系列 第 4

[Day 4] Node.js 的 Document (1) - 與 ES6 的友好關係

  • 分享至 

  • xImage
  •  

Start

前言

花了 3 天篇幅大致說完了 Node.js 外圍的事情,也該說說 Node.js 的內在。

看書第一件事情我習慣先看書背、目錄,Node.js 文件目錄分為四項,分別是

  • ES6 的說明
  • 常見的問題 (FAQ)
  • 其他操作手冊
  • API 參考文件

這篇會以 ES6 的說明 為主軸做記錄

已經支援的新語法

Node.js 對 ES6、ES 2017 等新語法的支援程度可以藉由 node.green 得知,而表格中可以發現在經過 io.js 的洗禮後的 Node.js 對 ES6 的支援度從 v0.12 的 31% 上升至 v4 的 57%,到了現在最新的 LTS 版的 v6 更達到 99% !

Node.js 會在每一個的更新適度的加入 JavaScript 的新語法,好讓未來的版本能跟上新語法的步調。然而為了 Node.js 的穩定性著想,並非每一個新支援的語法都會當做預設值可以使用,Node.js 將其分為三種階段

狀態 說明
Shipping 測試通過並預設運作,letconst 等需要宣告模式 "use strict"
Staged Chrome V8 團隊測試仍不穩定,使用需要加 --harmony ,如:node --harmony app.js
In progress V8 團隊尚未沒有測試過且官方不健議使用,但仍可各別透過 --harmony ,使用方式再麻煩知道的朋友告訴我

要怎麼 node.green 的資訊呢?可以看下表

顏色 說明
Yes Node 預設即可使用
Yes 執行是加 --harmony 才能使用
ErrorNo 這個 Node.js 的版本不支援或還沒測試過

除了 Node.js 原生,還有其他方式支援新語法嗎

有的!目前顯為人知就屬 Babel ,早期 Browser 還沒支持 ES6 等新語法,此時透過 Babel 既可輕鬆寫新語法又可以兼顧不支援新語法的 Browser。( 突然覺得開發 Back-end 是一種幸福,但我更喜歡前後跑 XD )

想知道主流的 Browser 對 ES6 的支援度和有哪些第三方方案解決 ES6 轉 ES5 等相關資訊,可以到 ECMAScript 6 compatibility table 查看,裡面有羅列的相當清楚,若你也願意一同維護這個資訊,歡迎 Fork 回去!

參考資料

  1. Nodejs原生支持的ES6特性

上一篇
[Day 3] Node.js 與我
下一篇
[Day 5] Node.js 的 Document (2) - 初探 Node.js 項目運作
系列文
從零開始認識 Node.js31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
卡西
iT邦新手 5 級 ‧ 2016-12-05 00:30:44

計畫中有打算介紹怎麼在 backend 靠 babel 寫 ES6 嗎?

看更多先前的回應...收起先前的回應...
Ivan Wei iT邦新手 5 級 ‧ 2016-12-05 00:56:10 檢舉

為了 ES6 在 Node.js 上使用 Babel ,不會這麼做!因為 Node.js 在 v6 和 v7 的版本對 ES6 的支援度已達 99% ,因此載入 Babel 使用,我認為沒有意義。

目前使用 Babel ,

  • 前端:會注重在 Browser 的相容性 (ES6 轉 ES5)
  • 後端:應該會注重在 ES2016 與 ES2017,若有在注意 ECMAScript 標準的發展,應該會聽到不少說提到 ES7 的 async / await

結論:

實作會以 ES6 方式撰寫為主,內容還在規劃,而 Babel 若有使用一定是其他的目的 XD

卡西 iT邦新手 5 級 ‧ 2016-12-05 13:47:17 檢舉

我遇到的狀況是:

有台機器只有 node v0.10 ,但我的程式是用 ES6 + koa 寫的,所以我希望能靠 babel 幫我轉譯出該機器能用的 js ... XD

Ivan Wei iT邦新手 5 級 ‧ 2016-12-05 22:59:10 檢舉

3 分鐘內想到的解決方案,

  1. 幫忙升級到 v6 XDD
  2. 安裝 Babel 和 babel-register ,babel-register 會做 Node.js 與 Babel 間的 hook
卡西 iT邦新手 5 級 ‧ 2016-12-05 23:16:52 檢舉

感謝回應 QQ

我要留言

立即登入留言