2016-02-29 90 views
7

對於我們的應用程序,我們需要使用新功能template stringHTML5,ES6模板字符串填充

var verLongKey= `834r845784576485 
y84ery5845y485yu843 
483y53485684576845 
jhu87843647356756745==457485,mh 
ererthe8t0998785==ery8`; 

但舊的瀏覽器(如android默認瀏覽器)不支持模板字符串。

如何獲得此功能的polyfill? 試過babel。我們得到了這個polyfill工作的所有功能,但template string。 當前正在使用modernizr來檢測支持並顯示使用其他瀏覽器的警報。 這種方法對用戶來說很煩人。我如何得到一些polyfill使這項工作在不支持的瀏覽器上?

是什麼讓我們這template strings。 問題是我無法使用這些工具(trceurbabel),因爲該文件是從puppet生產的。我們不可能在那裏運行這些轉譯器。想要在瀏覽器端添加一些polyfill。關鍵字中包含一些\n字符,需要保留這些字符。我想要一些polyfill,我可以在配置js文件之前加入。

+4

是什麼讓你「需要」模板字符串?你可以很容易地做到一切都沒有他們,你知道... –

+0

@MadaraUchiha同意,同樣的結果可以實現與ES5:http://stackoverflow.com/a/35695834/1092711 – Pavlo

+1

@MadaraUchiha不得不backport很多考慮到模板的使用允許嵌入在字符串(Javascript,SQL等)中的動態模板化代碼實際上是可讀和可維護的,所以廣泛使用模板字符串的代碼是* not * fun。 – Michael

回答

5

有3個主要的ES6 polyfill,可以給你模板字符串支持,但他們沒有一個完全支持,你可以在kangax's ECMAScript support table看到。

  • Traceur - 這是谷歌的ECMAScript中填充工具,支持一些的ECMAScript 6和ECMAScript下一個功能,它有模板字符串4/5的支持,沒有的toString轉換。

  • Babel - 另一個ECMAScript polyfill,通常有更多支持,但也只有4/5支持模板字符串,也沒有toString轉換。

  • es6-shim - 我不確定它是否已經開發出來了,但它沒有模板字符串。

但你可能要使用模板字符串,它只是一個語法糖字符串+添加變量和\擁有多線之前,要三思而後行。

+0

問題是我不能使用這些工具,因爲這個文件是從'puppet'的製作中生成。我們不可能在那裏運行這些轉譯器。想要在瀏覽器端添加一些polyfill。該鍵包含一些'\ n'字符,需要保留這些字符。我想要一些polyfill,我可以在配置js文件之前加入。 – lokeshjain2008

+0

我知道這是句法糖。但unix讀取文件和「pupper」替換密鑰的方式,需要一些方法來保留'\ n'字符。 「模板字符串」是解決方案。 – lokeshjain2008

+8

Traceur和Babel是* transpilers *,不是polyfills。在客戶端運行它們可能是可能的,但不推薦。 – Bergi