ES6学习1章:关于ES6
来源:互联网 发布:linux中的dd命令 编辑:程序博客网 时间:2024/06/04 20:12
一、关于Ecmascript
关于ecmascript,2013年3月,ES6的草案封闭,不再接受新功能了。而新的功能将被加入到ES7当中。
任何人都可以向TC39提案,从提案到正式标准需要经过五个阶段
- Stage 0 (展示阶段)
- Stage 1 (征求意见阶段)
- Stage 2 (草案阶段——进入这个阶段后,就差不多等于肯定会包换在ES7中)
- Stage 3 (侯选人阶段)
- Stage 4 (定案阶段)
二、关于ES6的工具
- babel @5版支持浏览器中使用,有在线转换,命令行转换,与其他工具Mocha,ESLint结合使用
- traceur 谷歌公司开发的转码器,支持直接插入网页,在线转换,命令行转换,Node环境中使用
1、 es-checker 查看正在使用的Node环境对ES6的支持情况
$ npm install -g es-checker $ es-checker
2、 Babel转码器
概要
- .babelrc 配置文件
- babel-cli 命令工具
- babel-core 核心方法
- babel-node 直接执行js转码的REPL环境
- babel-polyfill 转码新的JS API 模块
- babel-register 转码通过require加载的文件
- browser.js 在浏览器中实时转码(影响性能)
1)babel配置文件 ————只有在写好配置文件的前提下,才能进行下一步转码
babel关键配置文件 .babelrc (先安装对应规则 babel-preset-*,再配置使用规则)
{ //设置转码规则 "presets":[ "env", // 4选一 "es2015", "react", "stage-2" ], "plugins":[]}# ES2015转码规则$ npm install --save-dev babel-preset-es2015# react 转码规则$ npm install --save-dev babel-preset-react# ES7不同阶段语法提案的转码规则(共4个阶段),选装一个$ npm install --save-dev babel-preset-stage-0$ npm install --save-dev babel-preset-stage-1$ npm install --save-dev babel-preset-stage-2$ npm install --save-dev babel-preset-stage-3
2) 命令行转码 babel-cli
A、全局命令转码
# 全局安装babelnpm install -g babel-cli# 编辑js文件babel example.js# 常用命令# 指定输出文件babel example.js -o compiled.js# 整个目录转码babel src -d lib# 生成source map 文件babel src -d lib -s
- 以上代码是在全局环境下,进行babel转码,因此全局环境中必须安装了babel,因而项目产生了环境信赖,且这样做无法支持不同项目使用不同版本的babel。
- 解决办法:将babel-cli安装在项目中
B、项目中转码
# 安装bable-cli到项目中npm i babel-cli --save-dev# 添加命令到package.json{ "script":{ "build":"babel src -d lib" }}# 运行命令npm run build
3)、babel-node命令
- babel-node命令是随着babel-cli一起安装的,通过在cmd中输入babel-node进入到babel的转码环境REPL,从而可以直接在命令行中执行ES6代码
$ babel-node // 进入babel转码环境REPL> (x=>x*2)(1) // 一个立即执行函数2 // 执行结果 2
- 此外babel-node后还可以跟js文件,代表直接执行该文件
babel-node es6.js
4)、babel-register命令
babel-register模块必定了require命令,为它加上了钩子函数,每当使用require加载.js,.jsx,.es,.es6的文件时,都会先使用Babel进行转码
# 安装npm i --save-dev babel-register# 使用时,放在最前,其后通过require加载的文件都会自动转码require('babel-register')require('./index.js')
5)、babel-core
某些代码需要调用Babel的Api进行转码时,就需要这个模块
应用场景:在代码内手动调用babel的api操作时
#安装npm i babel-core# 使用var es6code = 'let x=n=>n+1';var es5code = require('babel-core').transform('es6code',{ presets:['es2015']}).code;# 结果通过babel-core将es6code转码为es5
6)、babel-polyfill
默认情况babel只转换新的JS语法,而不会转换新的API,而像新的ES6API(如:Iterator,Generator,Set,Maps,Proxy等)就需要使用babel-polyfill来配置
# 安装npm i --save babel-polyfill# 使用(在js文件头部加入代码)import 'babel-polyfill';// 或者require('babel-polyfill')
7)、在浏览器环境下使用ES6
babel从6.0版本开始不再直接提供浏览器版本,而是需要用构建工具构建出来。如果不想用构建工具,可以通过安装5.x版本的babel-core模块获取
# 安装npm i babel-core@5# 找到安装的browser.js在node_modules/babel-core/下找到babel的浏览器版本browser.js 或 browser.min.js# 使用<script src='browser.js'></script><script type='text/babel'> // 设置类型为 text/babel// 你的ES6代码</script>
- 网页中实时将Es6转码为ES5会对性能有影响,因为最后是在生产环境下先转码脚本
3、Traceur转码器
- 由Google公司开发的转码器
1)、命令行转换
# 安装npm i -g traceur# 使用1 —— 直接运行脚本traceur calc.js# 使用2 —— es6转Es5保存traceur --script calc.es6.js --out calc.es5.js --experimental// --script 指定输入文件,--out 指定输出文件,--experimental防止编译不成功
- ES6学习1章:关于ES6
- ES6入门第1章:关于ES6
- es6学习笔记1
- ES6学习笔记1
- es6语法学习-1
- es6学习笔记1
- es6学习1
- ES6学习
- ES6学习
- ES6学习
- ES6学习
- es6学习
- es6学习
- es6学习
- es6开发:ES6学习笔记
- es6
- es6
- ES6
- RabbitMQ与java、Spring结合实例详细讲解(转)
- .Net AOP处理
- R语言入门——个人笔记
- 【配置】flume安装配置
- 3. 第一个 Java 程序
- ES6学习1章:关于ES6
- 加L2正则化防止过拟合前后准确率变化,以及权重初始化
- git的基础操作,上传、提交、更新等命令
- 【初识Python笔记】window 下搭建python环境
- SqlServer高性能学习笔记(一)
- #define用法
- 初见Java之HelloWorld
- 关闭windows10动画效果提升计算机性能
- 565. Array Nesting