问题标签 [template-strings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1222 浏览

javascript - CSP 安全的 ES6 模板文字

是否有一个模板引擎可以解析ES6 模板文字(例如"string ${var}")样式的模板,而不会违反脚本评估的内容安全策略 (CSP) 限制?

CSP 对脚本评估的限制阻止eval限制、new Function和.setTimeout(string)setInterval(string)

有许多模板引擎可以提供或修改以提供类似 ES6 样式的模板文字,例如 John Resig 的MicroTemplates、 lodash _.template 和DoT.js。然而,所有似乎都违反了 CSP 使用new Function.

如果var可以是不受限制的 Javascript,在某些方面会很方便,但由于明显的原因,这可能是不可能的。但是,我需要能够修改引擎以根据需要格式化输出。

在这种情况下,性能不是问题,并且预编译模板不是一种选择。其他人有讨论了预编译

作为附加限制,内容是文本,而不是 HTML。因此,我认为 Knockout 或 PURE 等面向 DOM 的模板引擎不会有效地工作。

我的第一个想法是从mustache.js开始并从那里修改它(即更改mustache.tags = ['${', '}']DIY 解决方案,但我会很感激有关该主题的任何想法,因为似乎很少有关于 CSP 和模板的讨论.

0 投票
3 回答
371 浏览

javascript - ES6 Template String testbed

I'm really interested in finding out about ES6 Template Strings and have been doing a little bit of reading on the feature.

However now that Chrome Canary does not support it (although maybe I'm wrong about that!) is there anywhere/anything I can use to try out this new functionality? Any browser beta around that does?

I've already enabled Experimental Javascript Features inside chrome://flags

0 投票
2 回答
532 浏览

javascript - ES6 标记的​​模板函数如何解释它们的参数顺序?

考虑以下代码:

的论点f将是(根据 Traceur):

假设我想将所有文字字符串与替换值连接起来。
我该如何以正确的顺序执行此操作?

我需要先将第一个数组中的“分割点”与每个参数匹配吗?

0 投票
1 回答
276 浏览

ecmascript-6 - 覆盖处理 ES6 模板字符串的默认函数(准字面量)

ES6 提供模板字符串,例如

在这种情况下,会调用默认模板构建器。您也可以使用自己的“标签”:

wheretag是一个函数,它传递有关模板字符串的信息并生成结果。

我的问题是,有没有办法覆盖没有指定标签时调用的默认函数?

另一个问题:除了检查属性的第一个参数之外,有没有办法确定系统是否正在调用标记函数来构造模板字符串,而不是直接调用raw

0 投票
4 回答
103784 浏览

javascript - ES6 模板文字与串联字符串

我有ECMAScript 6 模板文字的以下代码:

输出如下:

是小提琴。

我试图寻找确切的区别,但我找不到它,以下两个语句有什么区别?

我已经能够在这里连接字符串MyVarperson.name那么使用模板文字的场景是什么?

0 投票
10 回答
297347 浏览

javascript - JavaScript 中反引号 (`) 的使用

在 JavaScript 中,反引号似乎与单引号的作用相同。例如,我可以使用反引号来定义这样的字符串:

有没有一种方法可以使反引号的行为实际上与单引号的行为不同?


† 请注意,在程序员中,“反引号”是更普遍地称为重音的名称之一。程序员有时也使用备用名称“backquote”和“backgrave”。此外,在 Stack Overflow和其他地方,“反引号”的其他常见拼写是“反引号”和“反引号”。

0 投票
19 回答
89304 浏览

javascript - 将字符串转换为模板字符串

是否可以将模板字符串创建为通常的字符串,

然后将其转换为模板字符串,

没有eval,new Function和其他动态代码生成方式?

0 投票
3 回答
22937 浏览

javascript - 反引号调用函数

我不确定如何解释这一点,但是当我跑步时

在谷歌浏览器中,我得到类似的输出

为什么反引号调用 log 函数,为什么它会创建一个索引raw: Array[1]

Catgocat 在 JS 房间提出了问题,但除了一些关于模板字符串的问题之外,没有任何答案是有意义的,这些问题并不真正适合为什么会发生这种情况。

0 投票
1 回答
10318 浏览

javascript - 如何从常规字符串构造模板字符串?

所以我有这个string

如何将其转换为模板字符串,以便结果等于:

有没有办法以编程方式构造模板文字?

0 投票
2 回答
9086 浏览

javascript - 如何防止字符 '\' 转义 ES6 模板字符串?

在 ES6 中,我可以这样做:

这将自动替换${myVar}为 的实际值myVar。完美的。

但是,如果我有这样的东西怎么办?

角色\正在逃离${}构造。它只是成为一个常规字符串。

在这种情况下,我怎样才能\ 不逃跑