为了账号安全,请及时绑定邮箱和手机立即绑定

Mako 模板中的 JavaScript 模板文字

Mako 模板中的 JavaScript 模板文字

繁星点点滴滴 2021-09-04 14:46:12
我有一个 Mako 文件(我的 Python 服务器将其转换为 HTML),其中包含一个带有 JavaScript ES6 模板文字的脚本元素。正如 Mako 和 JS 都认识到的那样${..},我被迫编写代码${'${..}'}以使 JS 模板工作——${{..}}类似于 f-string 什么也不做,我找不到|可以逃避它的标志。说<script>//This is just an examplelet entry = {title: '${some_py_value}'} //Mako templating$('body').append(`${'${entry.title}'}`); //JS templating</script>这有效,但看起来很尴尬,就像你在 Perl 中看到的那样,以至于我经常恢复到字符串连接——这通常表明有一个更优雅的解决方案潜伏着。有吗?
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

可以使用标签<%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 请求运行,因为数据需要先初始化但不能存储在服务器端等等。)。


查看完整回答
反对 回复 2021-09-04
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信