ES6学习准备

选择运行环境

ES6的语法,nodeJs、浏览器不一定都支持,不同版本的支持情况不一样。在学习过程中,如何确定是自己写的代码有问题,还是运行环境不支持呢?

首先,浏览器端一般支持的特性有限(好吧,我刚查了,最新的不包括IE11浏览器ES6支持很好,但是手机端支持不好,那就要考虑到浏览器的多样性),所以我使用nodeJs环境。

nodeJs各版本支持es6情况

更多平台支持es6情况

nodeJs支持ES6特性划分

  • shipping 已稳定支持
  • Staged 已支持,后续语法可能有变动,开启需加--harmony
  • In progress 未来语法变动不会通知

查看nodeJs的v8版本

node -p process.versions.v8

查看本地nodeJs版本 In progress特性

node --v8-options | grep "in progress"

更多 https://nodejs.org/en/docs/es6/

使用babel跑起来

babel可以将不支持的特性转化成ES5支持的写法。

配置

工程根目录.babelrc

  • 使用babel预设的presets

比如下面es2015,会将所有的ES6写法转换成ES5,但是本来nodeJs原生支持的,都转化了,对性能不好。

"presets": [
"babel-preset-es2015"
]
  • 使用babel的plugin

首先要清楚你要使用哪些特性,对不支持的特性,选择需要的babel插件,有针对的转化。比如我本地是nodeJs是v5.6.0。

http://node.green/搜索strict mode,发现许多语法需要,比如以下错误。为了以防万一,所有模块都加。我就加了插件transform-strict-mode。

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

为了保险,要使用的harmony的特性也转化下

相应的,我又加了其它插件。

"plugins": [
"transform-strict-mode",
"transform-es2015-modules-commonjs",
"transform-es2015-destructuring",
"transform-es2015-parameters"
]

安装babel环境

npm install --save-dev babel-cli -g
npm install --save-dev babel-preset-es2015

运行

开发中,使用babel-node test.js运行代码

发布,使用babel src --out-dir lib生成转化后代码

注意:babel-node和babel命令,都接受.babelrc配置

其它

babel也有浏览器端的,引入转码Js。就可以es6写代码直接跑起来。

babel入门

http://babeljs.io/docs/plugins/

严格模式的要求

ES6中,模块默认就是strict mode;并且上面通过babel插件,每个js自动注入了"use strict";

在ES5中,严格模式有些要求,我们在写ES6时也要遵循。

ES6学习准备的更多相关文章

  1. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  2. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  3. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  4. ES6(块级作用域)

    我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...

  5. es6小白学习笔记(一)

    1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...

  6. ES6之变量常量字符串数值

    ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...

  7. ES6之let命令详解

    let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...

  8. ES6 箭头函数中的 this?你可能想多了(翻译)

    箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...

  9. ES6+ 现在就用系列(二):let 命令

    系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...

随机推荐

  1. 微软编程一小时 题目2: Longest Repeated Sequence

    题目2 : Longest Repeated Sequence 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You are given a sequence of i ...

  2. zigzag数组实现

    题目出自面试宝典8.3.2 题目描述: 输入n,求一个n*n的矩阵,规定矩阵沿45度线递增,形成一个zigzag数组(JPEG编码里去像素数据的排列顺序),请问如何用C++实现? 例如: n=2 0 ...

  3. django LookUp

    Custom Lookups 一个简单LookUp例子 Author.objects.filter(name__ne='Jack') # Translate SQL "author" ...

  4. asp.net(mvc) 框架

    1.NFine mvc+ef 2.Grove orm架构 3.NHibernate orm 4.NBear 5.petshop 6.Membership 7.Brnshop 网上商城 8.cms快速开 ...

  5. [转] HTTP状态码错误代码

    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 ...

  6. python学习笔记之使用threading模块实现多线程(转)

    综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...

  7. java学习笔记_多态

    多态:父类的变量可以引用子类的对象 引用: Student s1 = stu; s1.setScore(200); 1.一个对象可以有多个引用,可以有多个变量操作同一个对象   2.当一个对象没有任何 ...

  8. XMPP使用tls 和sasl登录

    转自:http://ycool.com/post/xc98m5k 名词解释 TLS:安全传输层协议 TLS:Transport Layer Security 名词: 安全传输层协议(TLS)用于在两个 ...

  9. jQuery怎么获取到富文本ueditor编辑器里面的文字和图片内容

    jQuery怎么获取到富文本ueditor编辑器里面的文字和图片内容 .创建编辑器 UE.getEditor('editor', { initialFrameWidth:"100%" ...

  10. Linux安装Elasticsearch-head插件

    首先需要下载以下内容: 我试验的对应版本:ES:elasticsearch-6.6.1.tar.gz  Node:node-v10.15.3-linux-x64.tar  JDK:jdk-8u201- ...