ES6
ES6和JavaScript的关系
- ECMA是“European Computer Manufacturers Association” 的缩写,中文称欧洲计算机制造联合会。这个组织的目标是评估,开发和认可电信和计算机标准
- EAMA是标准,JavaScript是实现
- 类似HTML5是标准,IE10,Chrome等都是实现
- 目的是让所有前端脚本都实现ECMA
- 目前只有JavaScript实现EAMA标准,ECMAScript 约等于 JS
- ECMAScript简称EAMA或者ES(ES6)
- 目前版本
- 高级浏览器支持ES6
ECMA标准出台流程
ECMAScript是跨多个平台的许多厂商(包括浏览器厂商在内的各方组成)实施不断发展的标准。ES6(EAMAScript 2015)花费6年的时间敲定,是一个很大的发行版,新的年度发布流程被制定,以简化流程并更快的添加功能。ES9(ES2018)是目前的最新版本
接触ES6的意义
- 对语法的改进,功能的增加
- 使用Vue、Reat、小程序、Nodejs等都在用
- ES6以上版本再等等
解决ES6兼容问题
- IE10+、 Chrome、FireFox、移动端、NodeJS现在都支持
- 兼容低版本浏览器
- 在线转换(这种编译会加大页面渲染的时间)
- 提前编译(建议使用这种方式,不影响浏览器的渲染时间)
- 比较通用的工具方案有(babel,jsx,traceur,es6-shim等)
babel在线转换解决兼容性问题
安装:
npm i babel-core
#在安装位置下找到node_modules\babel-core\lib\api\browser.js
#在页面引用browser.js文件即可实现在线转换页面的es6代码
<script src="browser.js"></script>
<script type="text/babel">
var fn=(v=>console.log('this is start'))
</script>
babel提前编译
安装:
npm install babel-cli -g # 全局安装
#安装成功之后测试
babel -V
babel环境搭建
-
新建一个目录
-
进入目录,使用npm初始化项目
-
npm init | npm init -y
-
-
测试环境
-
babel-node
-
-
这里的babel-node是babel提供的编译工具,也可以执行js代码
-
babel-node index.js
-
-
在目录新建**.babelrc**文件(babel的配置文件)
-
# 输出内容到指定文件 文件不存在则创建 echo .>.babelrc
-
// 配置文件内容 { "presets":["es2015","stage-2"],//设置转码规则 "plugins":["transform-runtime"] //设置插件 }
-
-
这里需要转成(ES2015),安装我们需要的库
-
npm install babel-core babel-preset-es2015 babel-plugin-transform-runtime babel-preset-stage-2 -save-dev
-
-
打开项目的package.json文件,做如下修改:
-
"scripts":{ "build":"babel src -w -d lib" //编译整个src目录并将其输出到lib目录 },
-
编译整个src目录并将其输出到lib目录。这里的src指的是需要转换的目录,lib指的是输出内容的存放目录,-w其实是**-watch**的意思,就是监听文件,实时编译输出
-
新建src目录和lib目录,一定要新建,不然要报错,然后启动我们的babel工程:
-
npm run build
-