|
1
148
在我的项目中,我用ES6创建了这样的东西:
|
|
|
2
114
因为模板字符串必须获得对
但是,随着
|
|
|
3
31
您在这里的要求:
完全等同于(在功率和呃安全性方面)
在JS中,函数无法在其调用者中看到局部变量,除非该函数
当你听到JavaScript中有一种叫做“模板字符串”的东西时,很自然会假设它是一个内置的模板库,比如Mustache。它不是。主要是 string interpolation 以及JS的多行字符串。不过,我认为这将是一段时间内的普遍误解( |
|
|
4
31
不,没有动态代码生成就无法做到这一点。 然而,我已经创建了一个函数,它可以将一个常规字符串转换为一个可以在内部使用模板字符串提供值映射的函数。
用法:
希望这对某人有所帮助。如果您发现代码有问题,请及时更新Gist。 |
|
|
5
17
这里有很多好的解决方案,但还没有一个利用 ES6 String.raw method 这是我的忏悔。它有一个重要的限制,即它只接受传入对象的属性,这意味着模板中的代码执行将不起作用。
|
|
6
13
TLDR: https://jsfiddle.net/bj89zntu/1/ 每个人似乎都担心访问变量。为什么不直接通过呢?我确信在调用者中获取变量上下文并传递它不会太困难。使用 ninjagecko's answer 从obj那里得到道具。
以下是完整代码:
|
|
|
7
10
这里的问题是有一个函数可以访问其调用者的变量。这就是为什么我们看到直接
对于任何使用Babel编译器的人,我们需要创建一个闭包,它可以记住创建它的环境:
|
|
|
8
9
我喜欢s.meijer的回答,并根据他的回答撰写了自己的版本:
|
|
|
9
9
类似于丹尼尔的回答(和s.meijer的 gist )但更可读:
注意:这稍微改进了s.meijer的原始版本,因为它与以下内容不匹配
更新:我被要求提供一个使用这个的示例,所以这里是:
|
|
|
10
6
@Mateusz Moska,解决方案很好,但当我在React Native(构建模式)中使用它时,它会抛出一个错误: 无效字符“” ,但当我在调试模式下运行它时,它会工作。 所以我用正则表达式写下了自己的解决方案。
演示: https://es6console.com/j31pqx1p/ 注: 由于我不知道问题的根本原因,我在react native repo中提出了一个问题, https://github.com/facebook/react-native/issues/14107 ,以便一旦他们能够修复/指导我:) |
|
|
11
5
例如,可以使用字符串原型
但最初问题的答案是不可能的。 |
|
|
12
4
我需要支持Internet Explorer的此方法。事实证明,即使是IE11也不支持反引号。而且使用
对于发出通知的人;我也使用倒勾,但这些倒勾会被babel等编译器删除。其他人建议的方法依赖于运行时的方法。如前所述;这是IE11及更低版本中的一个问题。 这就是我想到的:
示例输出:
|
|
|
13
3
我目前无法评论现有的答案,因此我无法直接评论Bryan Raynor的出色回应。因此,这一回应将对他的回答进行轻微修正。 简而言之,他的函数无法实际缓存创建的函数,因此无论之前是否看到过模板,它都会重新创建。以下是更正的代码:
|
|
14
3
仍然是动态的,但似乎比仅使用裸求值更可控:
|
|
|
15
2
我制作了自己的解决方案,将描述作为函数
这样做:
|
|
|
16
2
我想出了这个实现,它工作起来很有魅力。
如果在模板中找不到arg,则可能会引发错误 |
|
|
17
1
此解决方案不使用ES6:
注:
|
|
18
1
你应该试试这个小小的JS模块,由Andrea Giammarci,来自github: https://github.com/WebReflection/backtick-template
演示(以下所有测试均返回true):
|
|
|
19
0
因为我们正在重新发明javascript中一个可爱的功能。
我使用
我选择使用
我不是javascript专家,所以我很乐意接受改进建议,但。。。
下面是一个非常简单的实现
在我的实际实现中,我选择使用
为了更容易阅读
如果您不熟悉正则表达式,一个非常安全的规则是转义每个非字母数字字符,而不要 曾经 不必要的转义字母,因为许多转义字母对几乎所有类型的正则表达式都有特殊意义。 |
|
|
20
0
Faz assim(这边):
|
|
|
21
0
您可以参考此解决方案
|
|
|
22
-3
我意识到我比赛迟到了,但你可以:
|
|
|
Hipster1206 · 分析bash中有空间的单个字符串参数 8 年前 |
|
|
Mr. Boy · 是否可能动态重新加载JS脚本文件? 8 年前 |
|
|
R. H. · matlab函数中避免求值 8 年前 |
|
|
Cleb · 如何为差分进化添加几个约束? 8 年前 |
|
|
Sergey Onishchenko · 将表达式计算为列名 8 年前 |
|
|
ARAT · 计算字符串和空单元格 8 年前 |
|
|
Doc_failure · 在节点服务器中使用eval是一个坏主意吗? 8 年前 |