使用命令,全局安装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/  显示如下就成功了!

让Node.js支持ES6的语法的更多相关文章

  1. 让 Node.js 支持 ES6 的语法

    为了让 Node.js 支持 ES6 的语法, 需要使用 Babel. 安装 es-checker 在使用 Babel 之前 , 我们先检测一下当前 node 对 es6 的支持情况. 在命令行下执行 ...

  2. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  3. mongoskin 是让 Node.js 支持 MongoDB 的内嵌访问层。

    mongoskin 是让 Node.js 支持 MongoDB 的内嵌访问层.

  4. 如何安装node.js支持插件

    在eclipse插件中,node.js插件中比较知名的是nodeclipse. 从HBuilder6.3起,工具-插件安装,可直接选择nodeclipse插件安装.安装完毕后重启HBuilder新建n ...

  5. [Node.js] Using ES6 and beyond with Node.js

    If you're used to using all the latest ES6+ hotness on the front end via Babel, working in Node.js c ...

  6. [Node.js] Testing ES6 Promises in Node.js using Mocha and Chai

    Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must includ ...

  7. Node.js用ES6原生Promise对异步函数进行封装

    Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初 ...

  8. vue-cli 部分浏览器不支持es6的语法-babel-polyfill的引用和使用

    npm install --save-dev babel-polyfill babel-polyfill用正确的姿势安装之后,引用方式有三种: 1.require("babel-polyfi ...

  9. [转载]Visual Studio支持Node.js

    http://news.cnblogs.com/n/193893/ https://nodejstools.codeplex.com/ 微软发布了一个官方插件“Node.js Tools for Vi ...

随机推荐

  1. linux正则表达式(全面解析)

    目录 一:linux正则表达式介绍 二:普通正则表达式 三:扩展正则 一:linux正则表达式介绍 1.正则表达式的分类(grep) 1.普通正则表达式 2.扩展正则表达式 二:普通正则表达式 ^ : ...

  2. X000100

    P3172 [CQOI2015]选数 gcd 为 \(K\) 不太好办,所以我们先把它转化成 gcd 为 1 的问题: scanf("%d%d%d%d",&n,&k ...

  3. SP19149 INS14H - Virus Revisited

    可以发现,如果一个整体一起考虑是不能找到一个合适的状态来描述这个情形的. 因此可以考虑寻找整体的反面,也就是将每个维度分开考虑. 不难发现每个维度本质上是一样的,因此不需要考虑不同维度之间的区别. 那 ...

  4. Tomcat下 session 持久化问题(重启服务器session 仍然存在)

    感谢大佬:https://www.iteye.com/blog/xiaolongfeixiang-560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionLi ...

  5. array_intersect_key 取得需要字段 用法

    $need_key = [ 'hash' => 0 ];        $parma = array_intersect_key( $parmas, $need_key );

  6. List接口中特有方法

    import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...

  7. iOS测试模板

    测试模板,每次写一个功能测试Demo时总是要新建一个工程,导入一些第三方库,比较麻烦,先提供一个测试模板,提供一些常用第三方库,自己就不用导了 使用Cocospod管理第三方库 常用(其他自行添加) ...

  8. 彻底搞清楚class常量池、运行时常量池、字符串常量池

    彻底搞清楚class常量池.运行时常量池.字符串常量池 常量池-静态常量池 也叫 class文件常量池,主要存放编译期生成的各种字面量(Literal)和符号引用(Symbolic Reference ...

  9. Ansible 自动化运维管理工具

    Ansible 自动化运维管理工具 1.Ansible概述 2.Ansible部署 3.Ansible模块 1.Ansible概述: Ansible是一个基于Python开发的配置管理和应用部署工具, ...

  10. Elasticsearch使用系列-基本查询和聚合查询+sql插件

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...