瀏覽器不識別ES6語法的解決方法

1、為什么ES6會有兼容性問題?

由于廣大用戶使用的瀏覽器版本在發布的時候也許早于ES6的定稿和發布,,而到了今天,我們在編程中如果使用了ES6的新特性,瀏覽器若沒有更新版本,或者新版本中沒有對ES6的特性進行兼容,那么瀏覽器肯定無法識別我們的ES6代碼,好比瀏覽器根本看不懂我寫的let和const是什么東西?只能報錯了。這就是瀏覽器對ES6的兼容性問題。

? 1.1、Good news

?針對ES6的兼容性問題,很多團隊為此開發出了多種語法解析轉換工具,把我們寫的ES6語法轉換成ES5,相當于在ES6和瀏覽器之間做了一個翻譯官。比較通用的工具方案有babel,jsx,traceur,es6-shim等。

此外,瀏覽器自身也加快速度兼容ES6的新特性,其中對ES6新特性最友好的是Chrome和Firefox瀏覽器。

各大轉換工具、JavaScript解析引擎對ES6的支持程度情況,可以參查看這個地址:

http://kangax.github.io/compat-table/es6/

? ?1.2、Bad? news

即使瀏覽器對ES6新特性開始漸漸支持,但是這還需要很長一段時間,我們不能百分百依賴瀏覽器本身對ES6的支持度來開發。

雖然出現了各種轉換工具,但是到目前為止,還沒有一款工具能百分百將ES6的新特性完美地轉換成ES5,因為在ES6新增的內容中,存在一些無法在ES5中找到與之匹配的語法,所以不建議在生產環境中使用支持度較低的新特性,后續的教程章節中介紹的新特性前端君也會特意提醒它的兼容性。

? ?1.3、But

但是,這并不影響我們學習ES6的熱情,因為ES6是未來的標準,瀏覽器支持只是遲早的事。

本節介紹其中一個轉換工具的安裝和使用情況,安裝使用以簡單為主,主要是讓新手和剛接觸的同學對轉換工具有感性的認知。再次表明,即使使用了轉換工具,我們還是不建議在生產環境大量地使用ES6的特性。

2、使用轉換工具babel(步驟如下)

? 2.1、制作ES6文件

? ? ? 新建一個html文件,取名為:ES6.html,加上含有ES6新特性的代碼,

? ? ? ? ? 例,

? 2.2、測試const兼容性

? ? ? 我們在chrome瀏覽器(版本不能太低)運行ES6.html,會正常運行,彈出“張三”。

? ? ? ?但是我們運行在IE 9,會看到這樣的情況:

? ? ? ?IE9瀏覽器會提示我們第9行出現一個語法錯誤,相當于告訴我們它看不懂const是什么鬼,但是學過ES6入門系列第三節的我們都知道const是ES6的新增關鍵字,用于聲明一個常量。這個時候我們知道const在IE9瀏覽器出現了兼容性問題了。

? ? 2.3、安裝node

? ? ? ? 我們可以使用npm來安裝babel,npm是隨同Nodejs一起安裝的包管理工具,新版的nodejs已經繼承了npm,我們只要安裝nodejs即可。

? ? ? ? (1)node官網(下載安裝包.msi):https://nodejs.org/

? ? ? (2)我們點擊v4.4.5LTS進行下載,下載后找到node-v4.4.5-x64.msi雙擊運行,點擊next(下一步)安裝即可。期間你可以自定義選擇安裝的位置,默認是C:\ProgramFiles\。最后一步點擊 Finish(完成)按鈕退出安裝向導。

? ? ? 2.4、檢測node是否安裝成功

? ? ? ? ? 安裝結束后,我們檢測是否安裝成功:

點擊 “開始”-> “運行”-> 輸入“cmd”-> 進入命令提示符窗口,輸入“node –version”來檢測當前node的版本。

出現:v4.4.5就表示安裝成功,因為我們下載的就是v4.4.5LTS。

? ? ?2.5、用npm安裝babel

? ? ? ? 啟動命令提示符窗口并且輸入:npm install babel-core@5,然后回車,這里要稍等片刻:

? ? ? 看到上面的界面就是表示你安裝babel成功,你會在電腦盤中找到這樣的目錄:C:\Users\Administrator\node_modules\babel-core,打開后你會看到:

? ? ? ? ? ? 在這個目錄里面我們找到babel的瀏覽器版本browser.js(未壓縮版)和browser.min.js(壓縮版)。

? ? ? ? 2.6、使用babel

? ? ? ? ? 然后我們將這個文件使用在我們的ES6.html中。

? ? ? ? 我們把browser.min.js引入(文件位置的路徑要確保正確)。并且設置第二個script標簽的type為”text/babel”。

? ? ? ? 2.7、讓const運行在IE9瀏覽器上

? ? ? ? 這個時候IE9能正常運行我們的ES6新特性了,也就是babel轉換起作用了,講const轉換成IE9能執行的代碼了。

3、結語

? ? 總結:目前,瀏覽器和轉換工具并沒有百分百支持ES6的全部新特性,但并不影響大家對ES6的學習熱情,因為這是未來的行業標準,前端開發者必須掌握的技能;而今天介紹的babel就是目前對 ES6 的支持程度較高,使用廣泛的ES6轉碼器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容