ES6入门 阮一峰 第二版

所需积分/C币:50 2018-03-01 12:55:46 3.91MB PDF
117
收藏 收藏
举报

ES6入门 阮一峰 第二版ES6入门 阮一峰 第二版ES6入门 阮一峰 第二版ES6入门 阮一峰 第二版
ECMAScript6简介 ECMAScript6(以下简称FS6)是 JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是 使得 JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年 发布的,所以又称 ECMAScript2015。也就是说,ES6就是ES2015,下一年应该会发布小幅修订的ES2016。 ECMAScript和 Javascript的关系 一个常见的问题是, ECMAScript和 JavaScript到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996年11月, JavaScript的创造者 Netscape公司,决定将 Javascript提交给 国际标准化组织ECMA,希望这种语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA262) 的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对 Javascript语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java是 Sun公司的商标,根据授权协议,只有 Netscape公司可以合法地使用 Javascript这个名字,且 JavaScript本身也 已经被 Netscape公司注册为商标。二是想体现这门语言的制定者是ECMA,不是 Netscape,这样有利于保证这 门语言的开放性和中立性。 因此, ECMAScript和 JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript和 Action Script)。在常场合,这两个词是可以互换的。 ECMAScript的历史 ES6从开始制定到最后发布,整整用了15年。 前面提到, ECMAScript10是1997年发布的,接下来的两年,连续发布了 ECMAScript2.0(1998年6月)和 ECMAScript3.0(1999年12月)。3.0版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学 3.0版的语法。 2000年,上 CMAScript4.0开始酝酿。这个版本最后没有通过,但是它的大部分内容被LS6继承了。因此,ES6 制定的起点其实是2000年。 为什么ES4没有通过呢?因为这个版本太激进了,对ES3做了彻底升级,导致标准委员会的一些成员不愿意接 受。ECMA的第39号技术专家委员会( Technical committee39,简称TC39)负责制订 ECMAScript标准,成员 包括 Microsoft、Mozl、 Google等大公司。 2007年10月, ECMAScript4.0版草案发布,本来预计次年8月发布正式版本。但是,各方对于是否通过这个标 准,发生了严重分歧。以 Yahoo、 Microsoft、 Google为首的大公司,反对 JavaScript的大幅升纵,主张小幅改 动;以 Javascript创造者 Brendan eich为首的Mozl公司,则坚持当前的草案。 2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA开会决定,中止 ECMAScript40的开发,将其中涉及现有功能改善的一小部分,发布为 ECMAScript3.1,而将其他激进的设 想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为 Harmony(和谐)。会后不 久, ECMAScript3.就改名为 ECMAScript5 2009年12月, ECMAScript5.0版正式发布。 Harmony项目则分为二,一些较为可行的设想定名为 JavaScript. next继续开发,后来演变成 ECMAScript6;一些不是很成熟的设想,则被视为 JavaScript.nextnext, 在史远的将来再考虑推出。TC39委员会的总体考虑是,ES5与ES3基本保持兼容,较大的语法修正和新功能 加入,将由 JavaScript ncxt完成。当时, Java Script.ncxt指的是FS6,第六版发布以后,就指FS7。TC39的判断 是,ES5会在2013年的年中成为 JavaScript开发的主流标准,并在此后五年中一直保持这个位置。 2011年6月, ECMAScript5.1版发布,并且成为ISO国际标准( ISO/TEC16262:2011)。 2013年3月, ECMAScript6草案冻结,不再添加新功能。新的功能设想将被放到 ECMAScript7 2013年12月, ECMAScript6草案发布。然后是12个月的讨论期,听取各方反馈。 2015年6月, ECMAScript6正式通过,成为国际标准。从2000年算起,这时已经过去了15年 部署进度 各大浏览器的最新版本,对ES6的支持可以查看 kangax github. io/es5 compat-table/es6。随着时间的推移,支持 度已经越来越高了,ES6的大部分特性都实现了。 Node. js是 Javascript语言的服务器运行环境,对ES6的支持度比浏览器更高。通过Node,可以体验更多ES6的 特性。建议使用版本管理工具nm,来安装Node,因为可以自由切换版本。不过,nvm不支持 Windows系 统,如果你使用 Windows系统,下面的操作可以改用nwmw或 nym-windows代替。 安装nvm需要打开命令行窗口,运行下面的命令 scurl-0-https://raw.githubusercontent.com/creationix/nvm/<versionnumber>/install.sh 上面命令的 version number处,需要用版本号替换。本节写作时的版本号是v.29.θ。该命令运行 后,nvm会默认安装在用户主目录的.nvm子目录 然后,激活nvm s source c/ nvm/nvm. sh 激活以后,安装Node的最新版。 S nvm install node 安装完成后,切换到该版本。 s nvm use node 使用下面的命令,可以查看Node所有已经实现的LS6特性。 g node --v8-options grep harmony harmony typeof harmony_ scoping harmony modules harmony symbols harmony_ proxies -harmony collections harmony observation harmony generators harmony iteration harmony numeric_ literals harmony strings harmony arrays -harmony_ maths -harmony 上面命令的输出结果,会因为版本的不同而有所不同。 我写了一个FS- Checker模块,用来检查各种运行环境对FS6的支持情况。访问 ruanyf github.io/ S-chcckcr,可以 看到您的浏览器支持ES6的程度。运行下面的命令,可以查看本机支持ES6的程度 s npm install -g es-checker s es-checker ==三=======三================== Passes 24 feature Dectations Your runtime supports 57% of ECMAscript 6 Babe转码器 Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。这意味着,你可以 用ES6的方式编写程序,又不用担心现有环境是否支持。下面是一个例子。 //转码前 input map(item =>item+ 1) //转码后 input map(function (item)i return item 1j }) 上面的原始代码用了箭头函数,这个特性还没有得到广泛支持,Babe将其转为普通函数,就能在现有的 JavaScript坏境执行了。 配置文件. babel Babel的配置文件是. babelrd,存放在项目的根目录下。使用 Babel的第一步,就是配置这个文件。 该文件用来设置转码规则和插件,基本格式如下。 presets plugins": LI presets字段设定转码规则,官方提供以下的规则集,你可以根据需要安装、 #ES2815转码规则 s npm install --save-dev babel-preset-es2015 # react转码规则 install dev babel-preset-react #ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个 s npm install --save-dev babel-preset-stage-0 s npm install --save-dev babel-preset-stage-1 s npm install --save-dev babel-preset-stage-2 s npm install --save-dev babel-preset-stage-3 然后,将这些规则加入. babel presets es2815" react plugins": L] 注意,以下所有 Babel工具和模块的使用,都必须先写好. babe lrc。 命令行转码 babel-c1 Babel提供 babel-c1i工具,用于命令行转码。 它的安装命令如下。 s npm install --global babel-cli 基本用法如下。 #转码结果输出到标准输出 s babel example. js #转码结果写入一个文件 #--ut-fi1e或-0参数指定输出文件 s babel example, js --out-file compiled js #或者 s babel example. js -o compiled, js #整个目录转码 #--0ut-dir或-d参数指定输出目录 s babel src --out-dir lib #或者 s babel src -d lib #5参数生成 source map文件 s babel src -d lib -S 上面代码是在全局环境下,进行Bab转码。这意味着,如果项目要运行,全局环境必须有 Babel,也就是说 项目产生了对环境的依赖。另一方面,这样做也无法支持不同项目使用不同版木的 Babel 一个解决办法是将babe1-c1i安装在项目之中 #安装 s npm install --save-dev babel-cl1 然后,改写 package.json。 " devDependencies":〔 babe1-c1i":"^6,0.9 scripts": build": babel src -d lib 转码的时候,就执行下面的命令 S npm run build babel-node babel-cli工具自带一个babe1-node命令,提供一个支持ES6的REPL环境。它支持Node的REPL环境的 所有功能,而且可以直接运行FS6代码。 它不用单独安裝,而是随babe1-c1i一起安装。然后,执行babe1-node就进入REPL环境 s babel-node (x=>×*2)(1) babe1-node命令可以直接运行ES6脚本。将上面的代码放入脚本文件es6.j5,然后直接运行。 s babel-node es6js babel-node也可以安装在项目中。 s npm install --save-dev babel-cli 然后,改写 package.json scripts script-name:babel-node script js 上面代码中,使用 babel-node替代node,这样 script.js本身就不用做仼何转码处理。 babel-register

...展开详情
试读 127P ES6入门 阮一峰 第二版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
ES6入门 阮一峰 第二版 50积分/C币 立即下载
1/127
ES6入门 阮一峰 第二版第1页
ES6入门 阮一峰 第二版第2页
ES6入门 阮一峰 第二版第3页
ES6入门 阮一峰 第二版第4页
ES6入门 阮一峰 第二版第5页
ES6入门 阮一峰 第二版第6页
ES6入门 阮一峰 第二版第7页
ES6入门 阮一峰 第二版第8页
ES6入门 阮一峰 第二版第9页
ES6入门 阮一峰 第二版第10页
ES6入门 阮一峰 第二版第11页
ES6入门 阮一峰 第二版第12页
ES6入门 阮一峰 第二版第13页
ES6入门 阮一峰 第二版第14页
ES6入门 阮一峰 第二版第15页
ES6入门 阮一峰 第二版第16页
ES6入门 阮一峰 第二版第17页
ES6入门 阮一峰 第二版第18页
ES6入门 阮一峰 第二版第19页
ES6入门 阮一峰 第二版第20页

试读结束, 可继续阅读

50积分/C币 立即下载