JavaScript Mako 模板中的模板文字
JavaScript template literals in a Mako template
我有一个 Mako 文件(我的 Python 服务器将其转换为 HTML),其中包含一个带有 JavaScript ES6 模板文字的脚本元素。由于 Mako 和 JS 都识别 ${..}
,我被迫编写 ${'${..}'}
以使 JS 模板工作 —${{..}}
类似于 f-string 什么都不做,我找不到 |
将逃脱它的标志。
说
<script>
//This is just an example
let entry = {title: '${some_py_value}'} //Mako templating
$('body').append(`${'${entry.title}'}`); //JS templating
</script>
这可行,但看起来很笨拙,就像您在 Perl 中看到的那样,以至于我经常恢复到字符串连接——这通常表明存在更优雅的解决方案。有吗?
可以使用标签 <%text>
和 </%text>
(ref) 关闭模板。介于两者之间的任何内容都将呈现为文本而不进行解析。
<script>
//This is just an example
let entry = {title: '${some_py_value}'} //Mako templating
<%text>
$('body').append(`${entry.title}`); //JS templating
</%text>
</script>
这比 ${'${jsVariable}'}
如果两者没有混合, 即 一个是先在 JS 中一次性传递 Python 变量,这是应该发生的事情*。问题是 %if
和 %for
不会在 %text
块中工作,但那些应该是 JS 编码的。
∗) 好的,理想情况下,所提供的 HTML 页面应该是通用的,没有外部的主要 JS 代码作为单个文件,用户数据由多个 ajax 请求填充。尽管总是存在极端情况(例如巨大的Python非JSON可序列化对象具有复杂且计算量大的方法,需要经常调用但不能运行 作为一系列 ajax 请求,因为数据需要先初始化但不能存储在服务器端等)。
我有一个 Mako 文件(我的 Python 服务器将其转换为 HTML),其中包含一个带有 JavaScript ES6 模板文字的脚本元素。由于 Mako 和 JS 都识别 ${..}
,我被迫编写 ${'${..}'}
以使 JS 模板工作 —${{..}}
类似于 f-string 什么都不做,我找不到 |
将逃脱它的标志。
说
<script>
//This is just an example
let entry = {title: '${some_py_value}'} //Mako templating
$('body').append(`${'${entry.title}'}`); //JS templating
</script>
这可行,但看起来很笨拙,就像您在 Perl 中看到的那样,以至于我经常恢复到字符串连接——这通常表明存在更优雅的解决方案。有吗?
可以使用标签 <%text>
和 </%text>
(ref) 关闭模板。介于两者之间的任何内容都将呈现为文本而不进行解析。
<script>
//This is just an example
let entry = {title: '${some_py_value}'} //Mako templating
<%text>
$('body').append(`${entry.title}`); //JS templating
</%text>
</script>
这比 ${'${jsVariable}'}
如果两者没有混合, 即 一个是先在 JS 中一次性传递 Python 变量,这是应该发生的事情*。问题是 %if
和 %for
不会在 %text
块中工作,但那些应该是 JS 编码的。
∗) 好的,理想情况下,所提供的 HTML 页面应该是通用的,没有外部的主要 JS 代码作为单个文件,用户数据由多个 ajax 请求填充。尽管总是存在极端情况(例如巨大的Python非JSON可序列化对象具有复杂且计算量大的方法,需要经常调用但不能运行 作为一系列 ajax 请求,因为数据需要先初始化但不能存储在服务器端等)。