使用 Django 进行 Javascript 模板化
Posted
技术标签:
【中文标题】使用 Django 进行 Javascript 模板化【英文标题】:Javascript Templating with Django 【发布时间】:2011-09-25 12:42:26 【问题描述】:我真的很想将 javascript 模板系统与 Django 一起使用。 Mustache.js(及其衍生产品)的语法和风格非常适合我。问题是 Mustache 使用的分隔符标签不能很好地与 Django 模板系统的语法配合使用。
有什么好的方法可以一起使用吗?
我尝试过使用this verbatim snippet 来正确渲染JS 模板。该解决方案的问题是我有时仍然需要 JS 中的 Django 变量或 URL。
我也尝试过使用更改 Mustache 的分隔符
=[[ ]]=
但是,这不允许使用部分标签,例如 #。作者表示他打算在未来的版本中完全删除该功能。
是否有任何 JavaScript 模板库紧跟 Mustache.js,但使用不同的分隔符?或者是否有其他解决方案可以更改 Mustache.js 使用的分隔符?
【问题讨论】:
【参考方案1】:我在 django 中使用了 jquery 的模板。最终我决定最好的方法是:
将所有 javascript 放入静态 javascript 文件中,无需任何服务器端处理即可提供它们 在 django 模板中提供所有 html 钩子(id 或类),但没有 js。 在 js 中使用 'document.ready' 加上 jquery 选择器将标签插入页面并附加事件 如果 js 需要数据然后进行 ajax 调用。我对最后一个软化了,可能会将数据作为 json 块嵌入到 django 模板中,并且可能在模板底部还有一个简短的 js,它只是设置变量/参数来指示 js 如何呈现页面 - 来自服务器端的小线索告诉它该做什么。
因此:
-
转义字符之间的争用不再是问题
您不必一直问自己“此代码是在服务器上运行还是在客户端上运行”,因为您不会尝试将两者同时写入一个文件中
您的 javascript 代码必须具有更好的结构和可重用性
【讨论】:
【参考方案2】:看起来change Mustache's delimiters 非常容易,尽管我认为应该支持可配置的分隔符。
如果您不能接受,还有很多其他模板库,例如 jquery-tmpl 和 underscore.template。
【讨论】:
【参考方案3】:EJS 是一个非常不错的模板系统。它使用<% %>
标签。
编辑:More templating libs
【讨论】:
EJS 似乎在对我做事。不过,我会仔细看看。感谢 microjs.com 上的提示!以上是关于使用 Django 进行 Javascript 模板化的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中使用模运算符 (%)? [复制]