2015-12-10 44 views
0

我想在我的腳本中使用ES6功能,並讓所有瀏覽器都支持它。我該怎麼做,我可以嗎?在所有瀏覽器支持下使用ES6功能

我一直在考慮使用一些工具,將我的代碼自動轉換爲服務器上的git pull,然後創建第二個文件。然後在瀏覽器中,我可以使用這些腳本之一,具體取決於瀏覽器及其版本。

這可能嗎?

這將創建但是一些問題:

  1. 轉換的代碼將具有相同的性能,如ES5寫代碼 本身。
  2. 我會寫某種如果在HTML,我想 僅包括一個腳本,沒有別的。

什麼是做到這一點的最好方法是什麼?

+0

查看https://babeljs.io/ – elclanrs

+1

[Babel](https://babeljs.io/) – Pointy

+1

https://www.google.com/search?q=convert+ES5+to+ES6 –

回答

0

直到更多的瀏覽器支持ES2015(又名ES6)功能,使用transpilers和polyfills將是唯一的出路。結賬the ES6 compatibility table,以確定您今天可以使用您的網站支持的瀏覽器的功能。

請記住,有兩個主要部分ES6:

  1. 新的語言功能
  2. 新的原生API功能

直到所有瀏覽器您的網站支持有支持新的ES6語言功能,如果沒有首先將它們轉換爲ES5等價物,您將無法在腳本中使用它們。我用babel,它運作得很好。生成的ES5等效代碼執行得很好。它還擊敗了我試圖手動編寫等效的ES5代碼。 babel生成的代碼已經由babel的測試套件進行了全面測試,並且已經被全球數以千計的開發人員使用。另外,使用ES6編寫代碼更短,更易於維護。這節省了大量的開發人員時間。當有一天,當所有的瀏覽器您的網站支持對所有的ES6功能的支持,那麼你就可以在你的構建關閉transpiling一步,你會得到的原生瀏覽器性能的全部好處,而不必手動手動轉換您的將ES5代碼寫入ES6。

許多新的原生API功能,可今天提供polyfill使用。當你想使用ES6功能你需要支持舊的瀏覽器時,才需要填充工具。隨着填充工具,只有舊的瀏覽器可能比本機實現處理速度較慢。由於大多數現代瀏覽器已經支持許多本地ES6 API功能,因此許多用戶將獲得瀏覽器本機實現的完整性能。根據我對polyfills的經驗,我沒有注意到任何重大的性能影響。

如果您擔心現代瀏覽器不必要的下載和運行填充工具都是多餘的,那麼有您能技術做的影響降到最低。 1)在服務器端,您可以檢測發出請求的瀏覽器,並確定是否打擾在響應中發送polyfill腳本標記。2)您可以正確版本化polyfill,並確保設置了Web服務器的緩存,以便瀏覽器在首次下載後很少發出對polyfill的請求。

巴貝爾曾經能夠在您的html文件中傳輸ES6代碼,但該功能已被刪除。您可以將您的嵌入式代碼移至單獨的外部JavaScript文件。如果您不喜歡引發其他請求獲取此外部JavaScript文件的想法,則可以執行以下操作:1)將ES6代碼寫入單獨的文件中。 2)通過babel運行此文件3)使用您的服務器端腳本語言直接在您的HTML中包含傳輸的內容。