ES6学习手册(一)——初识ES6
来源:互联网 发布:什么软件免费听音乐 编辑:程序博客网 时间:2024/06/08 14:50
ES6是什么
- ECAMScrpit定义了:
- 语言语法——语法解析规则、关键词、语句、声明、运算符;
- 类型——布尔型、数字、字符串、对象等;
- 原型和继承
- 内建函数和函数的标准库——JSON、Math、数组方法、对象自省方法等
2.ES5——2009年发布
这一版本引进了Object.create()、Object.defineProperty()、getters和setters、严格模式以及JSON对象。以及新的数组方法:.map()、. filter()这些。
3.es6——2015年9月发布
2000年,ECMAScript 4.0开始酝酿。这个版本最后没有通过,但是它的大部分内容被ES6继承了。因此,ES6制定的起点其实是2000年。
ECMAScript 2015(简称 ES2015)这个词,也是经常可以看到的。它与 ES6 是什么关系呢?
(这一段完全摘抄了阮一峰的《ECMAScript 6简介》)
2011年,ECMAScript 5.1版发布后,就开始制定6.0版了。因此,ES6 这个词的原意,就是指 JavaScript 语言的下一个版本。
但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要引入的功能。常规的做法是先发布6.0版,过一段时间再发6.1版,然后是6.2版、6.3版等等。
但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不断滚动的流程,每个月都会有变动。
标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的6月份,草案就自然变成了新一年的版本。这样一来,就不需要以前的版本号了,只要用年份标记就可以了。
ES6 的第一个版本,就这样在2015年6月发布了,正式名称就是《ECMAScript 2015标准》(简称 ES2015)。2016年6月,小幅修订的《ECMAScript 2016标准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异非常小(只新增了数组实例的includes方法和指数运算符),基本上是同一个标准。根据计划,2017年6月发布 ES2017 标准。
因此,ES6 既是一个历史名词,也是一个泛指,含义是5.1版以后的 JavaScript 的下一代标准,涵盖了ES2015、ES2016、ES2017等等,而ES2015 则是正式名称,特指该年发布的正式版本的语言标准。本书中提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”。
使用ES6
服务器端
1、 Babel转码器
Babel转码器是一个广泛的ES6转码器,可以将ES6代码转成ES5代码,从而在现有环境运行。
2、命令行转码babel-cli
babel提供babel-cli工具,用于命令行转码。
npm install -g babel-cli
将babel-cli安装在项目之中:
$ npm init$ npm install --save-dev babel-cli
然后,改写package.json:
{ // ... "devDependencies": { "babel-cli": "^6.0.0" }, "scripts": { "build": "babel src -d lib" },}
注意src文件夹中放源文件,运行下面的命令就可以将src中的es6文件转换为es5,并放在lib中。
$ npm run build
3、REPL下运行 babel-node
这个不用独立安装,随着babel-cli安装一起安装(必须全局模式下安装),执行babe-node 就能进入REPL环境。
也可以
4、babel-register
babel-register模块改写require命令,为它加上一个钩子。此后,每当使用require加载.js、.jsx、.es和.es6后缀名的文件,就会先用Babel进行转码。
5、babel-polyfill
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。
举例来说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
对于浏览器环境
Babel6.0开始,就不再提供浏览器版本,而是要用构建工具构建出来。
如果想要直接使用,也可以:
1. 安装babel-core 然后在当前目录的node_modules/babel-core/子目录里面,找到babel的浏览器版本browser.js(未精简)和browser.min.js(已精简)。
2. 将任一一个文件引入网页中
3. 然后就可以写es6代码了,值得注意的是用户写的es6代码要注明type:text/babel
但是网页中实时将ES6转换成ES5,对性能有影响,所以一般不推荐这种做法。
一个问题
然而我测试发现用node 编译和 babel-node 编译结果都一样,不知道为什么?难道node现在是支持es6的?不用babel了?
- ES6学习手册(一)——初识ES6
- ES6学习(一)
- ES6学习——ES6背景介绍
- ES6学习(一)——let和const命令
- ES6学习笔记(一)
- es6学习系列---(一)
- webpack学习ES6(一)
- ES6语法学习(一)
- ES6学习笔记(一)
- ES6学习笔记(一)
- es6学习过程(一)
- 【ES6】初识
- es6学习一
- ES6基础学习(一)
- ES6学习笔记(一)
- es6入门学习一
- ES6 —(Promise)
- ES6学习——ES7
- Spark修炼之道(进阶篇)——Spark入门到精通:第十四节 Spark Streaming 缓存、Checkpoint机制
- hdu 2923 Floyd
- 链表删除框架原理释义
- android实现定位与目的地的导航
- Android 主线程与子线程之间消息传递
- ES6学习手册(一)——初识ES6
- poj 3126 Prime Path(bfs)
- hdu 2050 折线分割平面
- Java中Runnable和Thread的区别
- 玲珑学院OJ 1091 Black and White【dp+前缀和】经典模型
- C++之模板详解(一)
- MySQL性能优化的最佳20+条经验
- 程序开发路线图
- sublime 一些好用的插件