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
解決方法是:
Setting——>Languages——>JavaScript——>ESMAScript 6
這樣,就可以進行ES6的使用了碴裙。
3.2.使用Babel完成ES6到ES5的轉(zhuǎn)換
- babel全局安裝
npm install -g babel-cli
- 使用npm創(chuàng)建一個nodejs工程钢悲,步驟如圖:
創(chuàng)建工程目錄,并執(zhí)行命令:
npm init
- 在當(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 "**"
4.本地安裝和全局安裝的區(qū)別
本地安裝
- 將安裝包放在 ./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當(dāng)前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄帖努。
- 可以通過 require() 來引入本地安裝的包撰豺。
全局安裝(-g)
- 將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
- 可以直接在命令行里使用拼余。