2016-02-29 89 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