Node ES6 支援並使用 Babel 建立專案

整個 ES6 規範尚未完整實現,因此你只能使用某些新功能。你可以在 http://node.green/上檢視當前支援的 ES6 功能列表

自 NodeJS v6 以來,一直有很好的支援。因此,如果你使用 NodeJS v6 或更高版本,你可以享受使用 ES6。但是,你可能還想使用一些未釋出的功能,以及其他一些功能。為此,你需要使用一個轉換器

可以在執行時執行轉換器並構建,以使用所有 ES6 功能等。最受歡迎的 JavaScript 轉發器稱為 Babel

Babel 允許你使用 ES6 規範中的所有功能以及“stage-0”的一些其他非規範功能,例如 import thing from 'thing 而不是 var thing = require('thing')

如果我們想建立一個專案,我們使用’stage-0’等功能,例如 import,我們需要新增 Babel 作為轉換器。你將看到使用 react 和 Vue 以及其他基於 commonJS 的模式的專案經常實現階段 0。

建立一個新的節點專案

mkdir my-es6-app
cd my-es6-app
npm init

安裝 babel ES6 預設和 stage-0

npm install --save-dev babel-preset-es2015 babel-preset-stage-2 babel-cli babel-register

建立一個名為 server.js 的新檔案並新增一個基本的 HTTP 伺服器。

import http from 'http'

http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'})
  res.end('Hello World\n')
}).listen(3000, '127.0.0.1')

console.log('Server running at http://127.0.0.1:3000/')

請注意,我們使用 import http from 'http'這是一個階段 0 功能,如果它工作,它意味著我們已經使轉換器正常工作。

如果你執行 node server.js,它將無法知道如何處理匯入。

在目錄的根目錄中建立 .babelrc 檔案並新增以下設定

{
  "presets": ["es2015", "stage-2"],
  "plugins": []
}

你現在可以使用 node src/index.js --exec babel-node 執行伺服器

在生產應用程式上執行執行時轉換器並不是一個好主意。但是,我們可以在 package.json 中實現一些指令碼,以便更輕鬆地使用它們。

"scripts": {
    "start": "node dist/index.js",
    "dev": "babel-node src/index.js",
    "build": "babel src -d dist",
    "postinstall": "npm run build"
  },

以上將在 npm install 上構建已轉換的程式碼到 dist 目錄,允許 npm start 使用轉換後的程式碼為我們的生產應用程式。

npm run dev 將啟動伺服器和 babel 執行時,這在當地處理專案時很好並且首選。

再進一步,你可以安裝 nodemon npm install nodemon --save-dev 來監視更改,然後重新啟動節點應用程式。

這真的加快了與 babel 和 NodeJS 的合作。在你的 package.json 中,只需更新 dev 指令碼即可使用 nodemon

"dev": "nodemon src/index.js --exec babel-node",