繁体   English   中英

Mako模板中的JavaScript模板文字

[英]JavaScript template literals in a Mako template

我有一个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块中工作,但是应该使用JS编码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM