让Node.js支持ES6的语法

使用命令,全局安装es-checker

cnpm install -g es-checker

 

安装好之后,执行以下命令来查看Node.js对ES6的支持情况。

es-checker

 

可以从输出中查看当前版本的Node.js对ES6的支持情况。

ECMAScript 6 Feature Detection (v1.4.1)

=========================================
Passes 38 feature Detections
Your runtime supports 90% of ECMAScript 6
=========================================

 

添加ES6支持

首先,使用cnpm init初始化cnpm工作目录,生成package.json文件。

cnpm init -y

 

接下来,需要安装Babel-cli。全局安装和本地安装都可以。

// 全局安装
cnpm install babel-cli -g

 

// 本地安装
cnpm install babel-cli --save

 

然后,安装babel-preset-es2015来支持ES6的语法。

cnpm install babel-preset-es2015 --save 

 

安装完之后,还需要添加一个名为.babelrc的配置文件。方便babel-cli使用babel-preset-es2015。文件内容如下:

{
    "presets": [
        "es2015"
    ],
    "plugins": []
}

 

测试ES6

使用es-checker测试Node.js的时候,发现Node.js不支持import语法。我们可以测试import来验证babel的支持程度。

创建一个index.js文件,内容如下:

import { createServer } from 'http';
 
var server=createServer(function(req,res){
console.log(req.method+':'+req.url);
//console.log(req.method+':'+req.url);
res.writeHead(200,{'Content-Type': 'text/html'});
res.end('<h1>Hello world!</h1>');
}).listen(8060);
console.log('http://localhost:8060');

 

 

直接使用Node.js执行index.js:

node index.js

 

执行结果会报错:

(function (exports, require, module, __filename, __dirname) { import { createServer } from 'http';
^

SyntaxError: Unexpected token {
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:282:19)

 

Node.js不支持import语法。接下来,使用babel来执行index.js。

全局安装的检测比较简单:

babel-node index.js

 

结果打印出a

http://localhost:8088
GET:/
GET:/favicon.ico

 

浏览器输入:http://127.0.0.1:8060/  显示如下就成功了!

 

本地安装的话,可以使用cnpm script来执行命令。在package.json文件的scripts添加命令"babel": "babel-node index.js",然后执行:

cnpm run babel

 

可以看到控制台有打印出结果。

http://localhost:8088
GET:/
GET:/favicon.ico

浏览器输入:http://127.0.0.1:8060/  显示如下就成功了!

 

 

posted @ 2018-12-23 14:40  杜子烟  阅读(650)  评论(0编辑  收藏  举报