ECMAScript6入門

1.JavaScript的歷史

誕生
JavaScript誕生于1995年焊刹。起初它的主要目的是處理以前由服務(wù)器端負(fù)責(zé)的一些表單驗證旬陡。當(dāng)時走在技術(shù)革新最前沿的Netscape(網(wǎng)景)公司辈赋,決定著手開發(fā)一種客戶端語言,用來處理這種裝簡單的驗證。當(dāng)時就職于Netscape公司的布蘭登·艾奇開始著手計劃將1995年2月發(fā)布的LiveScript同時在瀏覽器和服務(wù)器中使用。

Javascript于Java的關(guān)系
為了趕在發(fā)布日期前完成LiveScript的開發(fā)柿汛,Netscape與Sun公司成立了一個開發(fā)聯(lián)盟冗酿。而此時埠对,Netscape為了搭上媒體熱炒Java的順風(fēng)車络断,臨時把LiveScript改名為JavaScript,所以從本質(zhì)上來說JavaScript和Java沒什么關(guān)系项玛。

Javascript的版本問題
JavaScript 1.0獲得了巨大的成功貌笨,Netscape隨后在Netscape Navigator 3(網(wǎng)景瀏覽器)中發(fā)布了JavaScript 1.1。之后作為競爭對手的微軟在自家的IE3中加入了名為JScript(名稱不同是為了避免侵權(quán))的JavaScript實現(xiàn)襟沮。而此時市面上意味著有3個不同的JavaScript版本锥惋,IE的JScript、網(wǎng)景的JavaScript和ScriptEase中的CEnvi开伏。當(dāng)時還沒有標(biāo)準(zhǔn)規(guī)定JavaScript的語法和特性膀跌。隨著版本的不同暴露的問題日益加劇,JavaScript的規(guī)范化最終被提上日程固灵。

JavaScript與ECMAScript 的關(guān)系
1997年捅伤,以JavaScript1.1為藍本的建議被提交給了歐洲計算機制造商協(xié)會(ECMA,European Computer Manufactures Association)該協(xié)會指定39號技術(shù)委員會負(fù)責(zé)將其進行標(biāo)準(zhǔn)化巫玻,TC39來此各大公司以及其他關(guān)注腳本語言發(fā)展的公司的程序員組成丛忆,經(jīng)過數(shù)月的努力完成了ECMA-262——定義了一種名為ECMAScript的新腳本語言的標(biāo)準(zhǔn)。第二年仍秤,ISO/IEC(國標(biāo)標(biāo)準(zhǔn)化組織和國際電工委員會)也采用了ECMAScript作為標(biāo)準(zhǔn)(即ISO/IEC-16262)熄诡。

ECMAScript是什么?
ECMAScript是Javascript語言的標(biāo)準(zhǔn)
ECMA European Computer Manufactures Association(歐洲計算機制造聯(lián)合會)诗力,主要任務(wù)是研究信息和通訊技術(shù)方面的標(biāo)準(zhǔn)并發(fā)布有關(guān)技術(shù)報告
ECMAScript6:簡稱ES6凰浮,是JavaScript語言的下一代標(biāo)準(zhǔn),也是目前正是發(fā)布的最新JavaScript標(biāo)準(zhǔn)姜骡,由于ES6是在2015年發(fā)布导坟,所以ES6也成為ECMAScript2015

2.ECMAScript的發(fā)展歷史

  • 1998年6月,ECMAScript 2.0版發(fā)布圈澈。
  • 1999年12月惫周,ECMAScript 3.0版發(fā)布,成為JavaScript的通行標(biāo)準(zhǔn)康栈,得到了廣泛支持递递。
  • 2007年10月,ECMAScript 4.0版草案發(fā)布啥么,對3.0版做了大幅升級登舞,預(yù)計次年8月發(fā)布正式版本。草案發(fā)布后悬荣,由于4.0版的目標(biāo)過于激進菠秒,各方對于是否通過這個標(biāo)準(zhǔn),發(fā)生了嚴(yán)重分歧。
  • 2008年7月践叠,由于對于下一個版本應(yīng)該包括哪些功能言缤,各方分歧太大,爭論過于激進禁灼,ECMA開會決定管挟,中止ECMAScript 4.0的開發(fā),將其中涉及現(xiàn)有功能改善的一小部分弄捕,發(fā)布為ECMAScript 3.1僻孝,而將其他激進的設(shè)想擴大范圍,放入以后的版本守谓,由于會議的氣氛穿铆,該版本的項目代號起名為Harmony(和諧)。會后不久斋荞,ECMAScript 3.1就改名為ECMAScript 5悴务。
  • 2009年12月,ECMAScript 5.0版正式發(fā)布譬猫。Harmony項目則一分為二讯檐,一些較為可行的設(shè)想定名為JavaScript.next繼續(xù)開發(fā),后來演變成ECMAScript 6染服;一些不是很成熟的設(shè)想别洪,則被視為JavaScript.next.next,在更遠的將來再考慮推出柳刮。
  • 2011年6月挖垛,ECMAscript 5.1版發(fā)布,并且成為ISO國際標(biāo)準(zhǔn)(ISO/IEC 16262:2011)秉颗。
  • 2013年3月痢毒,ECMAScript 6草案凍結(jié),不再添加新功能蚕甥。新的功能設(shè)想將被放到ECMAScript 7哪替。
  • 2013年12月,ECMAScript 6草案發(fā)布菇怀。然后是12個月的討論期凭舶,聽取各方反饋。
  • 2015年6月17日爱沟,ECMAScript 6發(fā)布正式版本帅霜,即ECMAScript 2015。
    ECMA的第39號技術(shù)專家委員會(Technical Committee 39呼伸,簡稱TC39)負(fù)責(zé)制訂ECMAScript標(biāo)準(zhǔn)身冀,成員包括Microsoft、Mozilla、Google等大公司搂根。TC39的總體考慮是蝶怔,ES5與ES3基本保持兼容,較大的語法修正和新功能加入兄墅,將由JavaScript.next完成。

運行ECMAScript6的途徑

  • 瀏覽器(IE澳叉、Firefox隙咸、Chrome、Safari成洗、Opera等)
    瀏覽器對ES6的支持情況http://kangax.github.io/compat-table/es6/
  • 使用Javascript引擎的系統(tǒng)(如Node.js)
    Node.js是一個Javascript運行環(huán)境(runtime)五督。實際上它是對Google V8引擎進行了封裝。V8引 擎執(zhí)行Javascript的速度非称垦辏快充包,性能非常好。Google Chrome瀏覽器就是用的V8引擎
    Node.js 下載地址https://nodejs.org/zh-cn/遥椿,目前支持到97%
  • 使用Babel工具將ECMAScript6轉(zhuǎn)換為ECMAScript5
    Babel 是ES2015 語法轉(zhuǎn)化器基矮。這些轉(zhuǎn)化器能讓你現(xiàn)在就使用最新的 JavaScript 語法,而不用等待瀏覽器提供支持冠场。官網(wǎng)地址:http://babeljs.io/

3.ES6使用

3.1.配置WebStrom

在項目中引用js:
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/es6.js"></script>
</head>
<body>
米好
</body>
</html>

在es6.js中編寫es6語法:

/**
 * Created by jarrysong on 2017/5/17.
 */
let a="jarry";
alert(a);

這里會出現(xiàn)語法錯誤提示家浇,因為項目中不支持es6語法:let

error.png

解決方法是:
Setting——>Languages——>JavaScript——>ESMAScript 6

Es6設(shè)置.png

這樣,就可以進行ES6的使用了碴裙。

3.2.使用Babel完成ES6到ES5的轉(zhuǎn)換

  • babel全局安裝
npm install -g babel-cli
  • 使用npm創(chuàng)建一個nodejs工程钢悲,步驟如圖:
    創(chuàng)建工程目錄,并執(zhí)行命令:
npm init
創(chuàng)建工程.png
  • 當(dāng)前項目中安裝轉(zhuǎn)換插件(插件中的js代碼舔株,將用于轉(zhuǎn)換):
npm install babel-preset-es2015 –save
  • 使用WebStorm打開第一步創(chuàng)建的nodejs工程莺琳,在工程中創(chuàng)建一個js文件,并編寫ES6代碼
/**
 * Created by jarrysong on 2017/5/18.
 */
let a="jarry";
alert(a);
  • 手動將ES6轉(zhuǎn)換成ES5
babel es6.js --out-file es5.js --presets es2015

結(jié)果會在項目中生成一個es5.js文件载慈,里面就是對應(yīng)的es5語法:

/**
 * Created by jarrysong on 2017/5/18.
 */
"use strict";
/**
 * Created by jarrysong on 2017/5/18.
 */
var a = "jarry";
alert(a);

自動轉(zhuǎn)換
只要es6文件改動并保存了惭等,es5文件會自動修改

babel es6.js -w --out-file es5.js --presets es2015

3.3.在頁面中實時轉(zhuǎn)換ES6到ES5

  • 當(dāng)前項目安裝babel-core插件(在網(wǎng)頁上實時轉(zhuǎn)換ES6到ES5)
npm install babel-core@5 –save
  • HTML頁面引入babel-core實時轉(zhuǎn)換js代碼
/node_modules/babel-core/browser.min.js
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="/node_modules/babel-core/browser.min.js"></script>
    <script type="text/babel" src="es6.js"></script>
    <title>Title</title>
</head>
<body>

</body>
</html>

備注:在性能上考慮的話,一般是在服務(wù)器上轉(zhuǎn)成ES5之后傳給客戶端的性能效率會比客戶端從服務(wù)器拉取ES6轉(zhuǎn)成ES5要高办铡。

3.4.使用Browsersync實時刷新頁面

  • Browsersync能讓瀏覽器實時咕缎、快速響應(yīng)您的文件更改(html、js料扰、css凭豪、sass、less等)并自動刷新頁面晒杈。
  • 安裝Browsersync
npm install -g browser-sync
  • 當(dāng)前項目目錄下啟動Browsersync嫂伞,開始監(jiān)聽
browser-sync start --server --files "**"
實時更新.png

4.本地安裝和全局安裝的區(qū)別

本地安裝

  • 將安裝包放在 ./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當(dāng)前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄帖努。
  • 可以通過 require() 來引入本地安裝的包撰豺。

全局安裝(-g)

  • 將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
  • 可以直接在命令行里使用拼余。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污桦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匙监,更是在濱河造成了極大的恐慌凡橱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亭姥,死亡現(xiàn)場離奇詭異稼钩,居然都是意外死亡,警方通過查閱死者的電腦和手機达罗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門坝撑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粮揉,你說我怎么就攤上這事巡李。” “怎么了扶认?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵击儡,是天一觀的道長。 經(jīng)常有香客問我蝠引,道長阳谍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任螃概,我火速辦了婚禮矫夯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吊洼。我一直安慰自己训貌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布冒窍。 她就那樣靜靜地躺著递沪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪综液。 梳的紋絲不亂的頭發(fā)上款慨,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音谬莹,去河邊找鬼檩奠。 笑死桩了,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的埠戳。 我是一名探鬼主播井誉,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼整胃!你這毒婦竟也來了颗圣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤屁使,失蹤者是張志新(化名)和其女友劉穎在岂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屋灌,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年应狱,在試婚紗的時候發(fā)現(xiàn)自己被綠了共郭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疾呻,死狀恐怖除嘹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岸蜗,我是刑警寧澤尉咕,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站璃岳,受9級特大地震影響年缎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铃慷,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一单芜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犁柜,春花似錦洲鸠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萤悴,卻和暖如春瘾腰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆履。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工居灯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祭务,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓怪嫌,卻偏偏與公主長得像义锥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岩灭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容