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",