ES6(ECMAScript2015)的出現(xiàn),無(wú)疑給前端開(kāi)發(fā)人員帶來(lái)了新的驚喜,它包含了一些很棒的新特性,可以更加方便的實(shí)現(xiàn)很多復(fù)雜的操作,提高開(kāi)發(fā)人員的效率。
在ES5中,你可以在中直接寫可以運(yùn)行的代碼(簡(jiǎn)稱IIFE),或者一些庫(kù)像AMD。然而在ES6中,你可以用export導(dǎo)入你的類。下面舉個(gè)例子,在ES5中,module.js有port變量和getAccounts 方法:
module.exports?=?{??port:3000,??getAccounts:function(){????...??}}
在ES5中,main.js需要依賴require(‘module’) 導(dǎo)入module.js:
varservice?=require('module.js');console.log(service.port);//?3000
但在ES6中,我們將用export and import。例如,這是我們用ES6 寫的module.js文件庫(kù):
exportvarport?=3000;exportfunctiongetAccounts(url){??...}
如果用ES6來(lái)導(dǎo)入到文件main.js中,我們需用import {name} from ‘my-module’語(yǔ)法,例如:
import{port,?getAccounts}from'module';console.log(port);//?3000
或者我們可以在main.js中把整個(gè)模塊導(dǎo)入, 并命名為 service:
import*asservicefrom'module';console.log(service.port);//?3000
從我個(gè)人角度來(lái)說(shuō),我覺(jué)得ES6模塊是讓人困惑的。但可以肯定的事,它們使語(yǔ)言更加靈活了。
并不是所有的瀏覽器都支持ES6模塊,所以你需要使用一些像jspm去支持ES6模塊。
更多的信息和例子關(guān)于ES6模塊,請(qǐng)看this text不管怎樣,請(qǐng)寫模塊化的JavaScript。
如何使用ES6 (Babel)
ES6已經(jīng)敲定,但并不是所有的瀏覽器都完全支持,詳見(jiàn):http://kangax.github.io/compat-table/es6/。要使用ES6,需要一個(gè)編譯器例如:babel。你可以把它作為一個(gè)獨(dú)立的工具使用,也可以把它放在構(gòu)建中。grunt,gulp和webpack中都有可以支持babel的插件。

這是一個(gè)gulp案列,安裝gulp-babel插件:
$?npm?install?--save-dev?gulp-babel
在gulpfile.js中,定義一個(gè)任務(wù)build,放入src/app.js,并且編譯它進(jìn)入構(gòu)建文件中。
vargulp?=require('gulp'),??babel?=require('gulp-babel');gulp.task('build',function(){returngulp.src('src/app.js')????.pipe(babel())????.pipe(gulp.dest('build'));})
Node.js and ES6
在nodejs中,你可以用構(gòu)建工具或者獨(dú)立的Babel模塊 babel-core 來(lái)編譯你的Node.js文件。安裝如下:
$?npm?install?--save-dev?babel-core
然后在node.js中,你可以調(diào)用這個(gè)函數(shù):
require("babel-core").transform(ES5Code,?options);
ES6總結(jié)
這里還有許多ES6的其它特性你可能會(huì)使用到,排名不分先后:
1、全新的Math, Number, String, Array 和 Object 方法
2、二進(jìn)制和八進(jìn)制數(shù)據(jù)類型
3、默認(rèn)參數(shù)不定參數(shù)擴(kuò)展運(yùn)算符
4、Symbols符號(hào)
5、tail調(diào)用
6、Generators (生成器)
7、New data structures like Map and Set(新的數(shù)據(jù)構(gòu)造對(duì)像MAP和set)
參考文獻(xiàn):
http://webapplog.com/ES6/comment-page-1/
Understanding ECMAScript 6?by Nicolas Zakas book
http://ES6-features.org/#DateTimeFormatting
IIFE:立刻運(yùn)行的函數(shù)表達(dá)式