ES6学习准备
ES6学习准备
选择运行环境
ES6的语法,nodeJs、浏览器不一定都支持,不同版本的支持情况不一样。在学习过程中,如何确定是自己写的代码有问题,还是运行环境不支持呢?
首先,浏览器端一般支持的特性有限(好吧,我刚查了,最新的不包括IE11浏览器ES6支持很好,但是手机端支持不好,那就要考虑到浏览器的多样性),所以我使用nodeJs环境。
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写代码直接跑起来。
http://babeljs.io/docs/plugins/
严格模式的要求
ES6中,模块默认就是strict mode;并且上面通过babel插件,每个js自动注入了"use strict";
在ES5中,严格模式有些要求,我们在写ES6时也要遵循。
ES6学习准备的更多相关文章
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- ES6的一些常用特性
由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...
- ES6(块级作用域)
我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...
- es6小白学习笔记(一)
1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...
- ES6之变量常量字符串数值
ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...
- ES6之let命令详解
let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...
- ES6 箭头函数中的 this?你可能想多了(翻译)
箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...
- ES6+ 现在就用系列(二):let 命令
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
随机推荐
- 安装npm及cnpm
一.安装npm 1. 使用npm首先需要下载node.js 进入nodejs官网nodejs下载,如下图 : 选择适合自己的系统,我这里使用的是window10 64bit 2. 开始安装 **选好需 ...
- OCP最新题库052考题解析及答案-第37题
37.USER1 grants SELECT, INSERT, and UPDATE privileges on USER1. EMP to USER2. SYS executes this comm ...
- 牛客挑战赛30D 小A的昆特牌(组合数学)
题面 传送门 题解 很容易写出一个暴力 \[\sum_{i=l}^r {i+n-1\choose n-1}{s-i+m\choose m}\] 即枚举选了多少个步兵,然后用插板法算出方案数 我们对这个 ...
- 如何在Linux下禁用IPv6
如何在Linux下禁用IPv6 echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 禁用IP ...
- Oracle数据库count的一些操作
--统计数量 select count(*) from table; --统计某一列的数量(去空) select count(col) from table; --统计某一列的值大于或小于另一个值的数 ...
- UITableViewCell笔记
默认的四种cell的类型 原网站 还有这个带图的 据我自己试验,只有value2不自带imageview 不同的accessoryType 可以看到,一个tabelviewcell的contentvi ...
- 获取Android状态栏的高度
Android 开发中经常需要知道屏幕高度.宽度.状态栏,标题栏的高度等 宽度和高度 WindowManager windowManager = (WindowManager) getSystemSe ...
- [转]IOS应用程序多语言本地化解决方案
最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备 ...
- editplus5注册码
注册码:Vovan 3AG46-JJ48E-CEACC-8E6EW-ECUAW
- python super()继承和多继承
class A: def __init__(self): self.n = 2 def add(self, m): print('self is {} @A.add'.format(self)) se ...