【问题标题】:Polyfill for javascript template strings用于 JavaScript 模板字符串的 Polyfill
【发布时间】:2021-04-01 00:19:04
【问题描述】:

是否有任何用于使用反引号的 javascript 模板字符串的 polyfill?我指的是看起来像这样的代码:

var textTemplate = `
   <h1>My Template String</h1>
   <p>Some more stuf here...</p>
`;

我不希望使用诸如 babel 之类的编译器或任何其他需要构建步骤的工具。此外,将模板放在单独的脚本标签内的 javascript 模板引擎对我来说也不理想。

我真的很希望能够在同一个文件中使用模板字符串和其他标准 ES5 代码。这可能吗?

编辑:我特别需要模板字符串在 IE11 中工作。我意识到他们已经在大多数其他浏览器中这样做了。我现在也知道 polyfill 不是我想要的正确术语。

【问题讨论】:

  • Polyfills 用于函数和对象等,而不是用于语法。模板字符串是语法。你需要一个转译器。
  • 对不起,polyfills 和 shims 的概念对我来说是相当新的。我还在学习,所以我的术语有点偏离。

标签: javascript ecmascript-6 template-strings


【解决方案1】:

是否有任何用于使用反引号的 javascript 模板字符串的 polyfill?

没有。你不能为新的 Javascript 语法使用 polyfill,就像反引号一样。 polyfill 不会影响代码的编译或一行代码的执行。它只能影响运行时的函数调用。

新 Javascript 语法的解决方案是将新语法转换为 ES5 兼容代码。

您甚至不能创建一个函数来执行相同类型的字符串替换(当传递一个普通的 Javascript 引用字符串时),因为函数实现无法访问通常在反引号模板中使用的局部范围变量。

还有其他类型的字符串替换可以在函数中实现,但是您必须传递要替换的值(例如 C 中的 sprintf 并使用与模板文字不同的语法),而不仅仅是使用变量模板字符串中的名称。

【讨论】:

  • 谢谢。这确实是我害怕的,但我想在我再次跳回转译器之前确定一下。对于这个特定的项目,我只是想要一种非常简单的方法来在 JS 中构建 html 模板,而无需任何额外的库或工具。我猜是一厢情愿的想法。
  • @UglyBoogaloo - 有很多 HTML 模板库可以很好地与 ES5 配合使用。如果您想使用一个,则无需自己发明,但是是的,您需要引入一个外部库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2019-04-19
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
相关资源
最近更新 更多