一、相容情況 說到ECMAScript6,順便提一下ECMAScript5,先看一下ES5的相容情況。ES5瀏覽器支持情況: Opera 11.60;Internet Explorer 9*;Firefox 4;Safari 5.1**;Chrome 13* IE9不支持嚴格模式 — IE10 添加 ...
一、相容情況
說到ECMAScript6,順便提一下ECMAScript5,先看一下ES5的相容情況。ES5瀏覽器支持情況:
Opera 11.60;Internet Explorer 9*;Firefox 4;Safari 5.1**;Chrome 13
* IE9不支持嚴格模式 — IE10 添加
** Safari 5.1 仍不支持 Function.prototype.bind, 儘管Function.prototype.bind現在已經被
Webkit所支持。
具體ES5、ES6各瀏覽器支持情況可以查看
ECMAScript5:http://kangax.github.io/compat-table/es5/
ECMAScript6:http://kangax.github.io/compat-table/es6/
二、相容方法
針對ES6的相容性問題,很多團隊為此開發出了多種語法解析轉換工具,把ES6語法轉換成ES5。
比較通用的工具方案有babel,traceur,jsx,es6-shim等。
此外,瀏覽器自身也加快速度相容ES6的新特性,其中對ES6新特性最友好的是Chrome和Firefox
瀏覽器。在使用ES6時,先不用引入任何東西,去測試,因為現在瀏覽器已經支持部分ES6功能,有的
不需要轉碼,轉碼反而錯誤。
我們用下麵的代碼去測試瀏覽器是否相容ES6語法const
<script>
const Name = '張三';//使用新增的關鍵字:const聲明常量
alert(Name);
</script>
正常運行,會彈出“張三”,如果報錯我們就知道是瀏覽器出現了相容問題。當瀏覽器不支持
ES6時,再用Babel和Traceur對ES6進行轉碼。
三、使用Babel來相容
使用npm來安裝babel,npm是和Nodejs一起安裝的包管理工具,新版的nodejs已經繼承了npm,我
們只要安裝nodejs即可。在node官網下載尾碼為msi的最新安裝包,下載後找到文件雙擊運行,點擊下
一步安裝即可,期間可以自定義選擇安裝的位置,預設是C:\ProgramFiles\。啟動命令提示符視窗,
輸入“node --version”來檢測當前node的版本,當有版本號顯示說明Node成功安裝。
下麵我們用npm安裝babel,啟動命令提示符視窗並且輸入:npm install babel-core@5,然後回
車,安裝成功後,打開目錄:C:\Users\Administrator\node_modules\babel-core,在這個目錄裡面
我們找到babel的瀏覽器版本browser.js(未壓縮版)和browser.min.js(壓縮版)。把browser.min.js
引入(文件位置的路徑要確保正確)。並且設置第二個script標簽的type為”text/babel”。
<script src="browser.min.js"></script>
<script type="text/babel">
const Name = '張三';
alert(Name);
</script>
四、使用Traceur轉碼器直接插入網頁的方法來轉碼ES6
在網頁頭部載入Traceur庫文件。
<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script type="module">
const Name = '張三';
alert(Name);
</script>
1.traceur:是由Google出的編譯器,可以將ES5編譯成ES6
2.bootstrap:是一個引導程式(與響應式的bootstrap不同)
3.需要將traceur.js和bootstrap.js下載下來,引入到當前文件中即可
4.最後的script標簽的type屬性的值是module,而不是text/javascript。這是Traceur編譯器識別
ES6代碼的標誌,編譯器會自動將所有type=module的代碼編譯為ES5,然後再交給瀏覽器執行。
五、另外還有Babel轉碼器的其他使用方法,Traceur的命令行轉換方法和Node.js環境的用法,這裡的
方法只是作為一個學習的入門案例,起到拋磚引玉的作用,讓新手們能對ES6的相容問題和轉換工具
有個認識,並沒有覆蓋所有相容方案的介紹,希望大家隨著對ES6越來越深入學習,對轉換工具的掌
握也越來越全面和熟練。