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+ 现在就用系列(四):箭头函数 => ...
随机推荐
- C# xsd 验证 XML数据有效性 问题
使用XSD进行批量数据导入时生成的XML数据有效性这样的功能已经不是第一次做了,之前做的时候都没有碰到什么问题,这些天在开发中遇到了一个很头痛的问题就是无论XSD文件规则怎么写,验证都是通过的. 下面 ...
- Windows解决多版本python执行pip3时出错AttributeError: module 'enum' has no attribute 'IntFlag'?
摘要: 本机装有python2.7和python3.6,执行pip和pip2时没有问题,执行pip3时提示: C:\Users\>pip3 Traceback (most recent call ...
- ASP.NET MVC 全局过滤器(FilterConfig)、标记在控制器上和方法上的筛选器执行顺序
FilterConfig->控制器上的筛选器-->方法上的筛选器(大-->小,上-->下) 全局-->控制器->个别 尝试的时候记得把返回true protecte ...
- C#设计模式--工厂模式和抽象工厂模式
话说有三大潮牌公司一直相互PK,有一天举办了一个活动让这三大公司来一个PK,我们来看看哪家公司的上衣做出来好看穿得舒服 现在我们有一个上衣的抽象产品让三大公司来做 //抽象产品 public inte ...
- Linux 下面screen命令的用法
最近在使用阿里云的Linux 云服务做毕业设计遇到一些问题,我把java的jar运行程序上传之后,使用java -jar server命令之后程序开始正常运行,但是当我关闭终端的时候程 ...
- ASP 缓存处理及URL 重写
1 缓存 1.1.1 <%--通过设置VaryByParam =" VaryByParam ="none" %> 1.1.2 <%--带参数缓存,只要包 ...
- WPF 添加OCX控件
1. 在计算机上安装OCX控件 2.创建WPF应用程序 3.打开工具箱 4.单击COM 组件选项卡上,选择安装的控件,,然后单击确定,将控件添加到工具箱 5.在解决方案资源管理器,右键单击UserCo ...
- shell+crontab 实时服务进程监控重启
#!/bin/sh #filename: checkProcess.sh #示例:每分钟检测httpd是否在运行,不在运行则重启 #crontab -e # 加入:*/ * * * * checkPr ...
- window phone8.1 hello,world(补交作业)
第一步,我们需要创建一个简单的hello,world程序来帮助我们了解大致的方向. 下面是这个小例子的步骤: 1.打开vs,点击 文件-新建-项目:如图:
- iOS 之NSOperation(一)
一.NSOperation的介绍 1.NSOperation的作用 配合使用NSOperation和NSOperationQueue实现多线程编程 2.实现多线程的具体步骤 1)将需要执行的操作封装到 ...