Mako temp中的JavaScript模板文本

2024-04-29 06:50:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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中看到的一样,以至于我经常返回到字符串串联(string concatenation)——这通常是一个迹象,表明隐藏着一个更优雅的解决方案。有吗?你知道吗


Tags: 文件字符串文本服务器脚本模板titlemako
1条回答
网友
1楼 · 发布于 2024-04-29 06:50:37

可以使用标记<%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变量,这就是应该发生的*。catch是%if%for%text块中不起作用,但这些块应该是JS编码的。你知道吗

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

相关问题 更多 >