javascript - ES6 标记模板实用性

标签 javascript ecmascript-6 template-strings tagged-templates

我了解ES6的语法tagged templates 。我没有看到的是实际可用性。什么时候比传递对象参数更好,比如 jQuery's AJAX 中的设置? $.ajax('url', {/*这家伙在这里*/})

现在我只看到了棘手的语法,但我不明白为什么我需要/使用它。我还发现 TypeScript 团队选择在其他重要功能之前实现它(在 1.5 中)。标记字符串模板背后的概念是什么?

最佳答案

您可以使用标记模板来构建比常规函数调用更具表现力的 API。

例如,我正在处理 proof-of-concept library对于 JS 数组的 SQL 查询:

let admins = sql`SELECT name, id FROM ${users} 
                 WHERE ${user => user.roles.indexOf('admin') >= 0}`

注意它与字符串插值无关;它使用标记模板以提高可读性。很难用简单的函数调用来构建直观地读取的东西 - 我猜你会有这样的东西:

let admins = sql("SELECT name, id FROM $users WHERE $filter",
  { $users: users, $filter: (user) => user.roles.contains('admin') })

这个示例只是一个有趣的副项目,但我认为它显示了标记模板的一些好处。

另一个例子,也许更明显,是 i18n - 标记模板可以插入输入的区域设置敏感版本。

关于javascript - ES6 标记模板实用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568426/

相关文章:

javascript - 如何打包带有可选子模块的 Node 模块?

Javascript 函数不返回 false

javascript - 按顺序执行Promise : understanding a claim made about this example code

javascript - 如何更改模板字符串推断的值

javascript - 为什么在 JavaScript 中使用模板字符串表达式 a =`${a}` ?

javascript - 如何将局部变量传递给 Promise Done 函数

javascript - 如何在使用 ng-include 加载部分内容之前解决 XHR 请求

javascript - 将代码转换为 ES6 模块

javascript - 如何在es6中实现实例计数器?

typescript - Twin.Macro(样式化组件)+ NextJS 中的 Typescript : Argument of type 'Interpolation<never>' is not assignable to parameter of type