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+ 现在就用系列(四):箭头函数 => ...
随机推荐
- delphi添加.ocx后缀的控件
在delphi ocx控件的安装步骤:1.第一步: 使用过Activex的人都知道,Activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的Activex控件注册,但如果拿到 ...
- linux权限及目录
[-][rwx][r-x][r--] r:4 - 读 w:2 - 写 x:1 - 执行 1:代表文件类型 2:代表文件所有者的权限 3:代表文件所在组的权限 4:代表其他用户的权限 chgrp:修 ...
- ref 和 out 的用法和区别以及params用法
方法参数可以划分为一下四种类型1 值参数:声明时不含任何修饰符2 引用参数:以ref修饰符声明3 输出参数:以out修饰符声明4 参数数组:以params修饰符声明 引用参数和输出参数不创建新的存储位 ...
- sql获取表的所有字段及属性
select c.name as name,t.name as type ,convert(bit,c.IsNullable) as isNULL , from sysobjects where xt ...
- WinForm中的重绘 - 按钮等控件的背景渐变色重绘
注:brush通过起止坐标来控制重绘范围及方向.比如从上到下渐变时,brush第二个Point参数是左下角坐标. private void PaintGradientBackground(Button ...
- 201621123012 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集 ...
- redis删除指定前缀的缓存
redis作为缓存服务器为MySQL数据库提供较高的防御性,对于一些数据的查询可以直接从缓存中可以进行查询. 但是,某些情况下,我们需要清除缓存. 以下场景: 公司经常做活动,每个活动都存在大量的数据 ...
- [Objective-C语言教程]开发环境设置(2)
如果要安装自己的Objective-C编程语言编程环境,则需要在计算机上安装文本编辑器和GCC编译器. 1. 文本编辑器 文本编辑器用于编写程序代码.一些常见的编辑器如:Windows Notepad ...
- 量化分析获取数据的3种姿势(压箱底的神器Tushare)
自打入门量化分析起,就有相当部分的时间在与数据打交道,从数据的获取.清洗到使用,对分析而言既是繁琐的,也是必须的.有大牛曾经说,量化分析有8成的开发时间都在处理数据. 为了节省时间,将更多精力投入到策 ...
- Python处理json数据--世界国家维度数据
1.准备国家的json数据 将准备好的json数据放在指定的目录下,此处可以重这里下载 2.测试编写python脚本处理json提取字段值 #coding:utf8 import time, re, ...