gpt4 book ai didi

Mako 模板中的 JavaScript 模板文字

转载 作者:行者123 更新时间:2023-12-02 23:11:02 26 4
gpt4 key购买 nike

我有一个 Mako 文件(我的 Python 服务器将其转换为 HTML),其中包含带有 JavaScript ES6 模板文字的脚本元素。由于 Mako 和 JS 都识别 ${..},我被迫编写 ${'${..}'} 以使 JS 模板正常工作 —${{..}} 类似于 f 字符串,什么也不做,我找不到可以转义它的 | 标志。说

<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 block ,但这些应该是 JS 编码的。

*) 好的,理想情况下,所提供的 HTML 页面应该是通用的,而不需要外部的主要 JS 代码作为单个文件,并由多个 ajax 请求填充用户数据。尽管总是存在一些极端情况(例如巨大的Python非JSON可序列化对象,其方法复杂且计算量大,需要频繁调用,但不能作为一系列ajax请求运行,因为数据需要首先初始化但不能存储在服务器端等)。

关于Mako 模板中的 JavaScript 模板文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com