问题标签 [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.
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 和模板的讨论.
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
ecmascript-6 - 覆盖处理 ES6 模板字符串的默认函数(准字面量)
ES6 提供模板字符串,例如
在这种情况下,会调用默认模板构建器。您也可以使用自己的“标签”:
wheretag
是一个函数,它传递有关模板字符串的信息并生成结果。
我的问题是,有没有办法覆盖没有指定标签时调用的默认函数?
另一个问题:除了检查属性的第一个参数之外,有没有办法确定系统是否正在调用标记函数来构造模板字符串,而不是直接调用raw
?
javascript - ES6 模板文字与串联字符串
我有ECMAScript 6 模板文字的以下代码:
输出如下:
这是小提琴。
我试图寻找确切的区别,但我找不到它,以下两个语句有什么区别?
和
我已经能够在这里连接字符串MyVar
,person.name
那么使用模板文字的场景是什么?
javascript - JavaScript 中反引号 (`) 的使用
在 JavaScript 中,反引号†似乎与单引号的作用相同。例如,我可以使用反引号来定义这样的字符串:
有没有一种方法可以使反引号的行为实际上与单引号的行为不同?
† 请注意,在程序员中,“反引号”是更普遍地称为重音的名称之一。程序员有时也使用备用名称“backquote”和“backgrave”。此外,在 Stack Overflow和其他地方,“反引号”的其他常见拼写是“反引号”和“反引号”。
javascript - 将字符串转换为模板字符串
是否可以将模板字符串创建为通常的字符串,
然后将其转换为模板字符串,
没有eval
,new Function
和其他动态代码生成方式?
javascript - 反引号调用函数
我不确定如何解释这一点,但是当我跑步时
在谷歌浏览器中,我得到类似的输出
为什么反引号调用 log 函数,为什么它会创建一个索引raw: Array[1]
?
Catgocat 在 JS 房间提出了问题,但除了一些关于模板字符串的问题之外,没有任何答案是有意义的,这些问题并不真正适合为什么会发生这种情况。
javascript - 如何从常规字符串构造模板字符串?
所以我有这个string
:
如何将其转换为模板字符串,以便结果等于:
有没有办法以编程方式构造模板文字?
javascript - 如何防止字符 '\' 转义 ES6 模板字符串?
在 ES6 中,我可以这样做:
这将自动替换${myVar}
为 的实际值myVar
。完美的。
但是,如果我有这样的东西怎么办?
角色\
正在逃离${}
构造。它只是成为一个常规字符串。
在这种情况下,我怎样才能\
不逃跑?