使用Javascript或Django进行模板化?

时间:2010-11-19 22:22:17

标签: javascript django django-templates

我正在构建一个Django Web应用程序,它有很多由ajax请求动态生成的html。现在我使用Django的模板语言来构建html,然后将这个新的HTML作为字符串传递给JSON对象,然后使用jQuery将其注入到页面中。

这种方法效果相当不错,但是现代浏览器中的Javascript速度非常快,并且制作了如此多的javascript模板库,我想知道是否应该推送所有客户端。

所以我的问题是:鉴于我的平均“页面”包含来自它的所有请求必须在其生命周期内编译约300个模板(每个约15个左右的行,具有5个左右的替换)在浏览器中进行模板化是否具有显着的性能优势?

此外,任何人都可以推荐'快速'的Javascript模板库吗?我听说过关于underscore.js,mustache.js和jQuery模板的好消息。

4 个答案:

答案 0 :(得分:5)

坚持使用Django模板的(大量)优势是您只需要使用一种模板语言,无论您希望生成哪个页面,它都会保留相同的功能。如果您发现自己遇到了性能问题,那么您应该考虑查看caching template fragments

答案 1 :(得分:3)

我认为混合客户端和服务器模板架构不好。只要您在一个环境中编写模板。

每次生成页面服务器端时,都会消耗一定的处理时间和一些网络带宽。如果您使用托管服务器,这就是您所支付的费用 用户的浏览器正在等待通常空闲的计算机上空闲以进行响应。

如果您在客户端(HTML + JS)上发送模板,则可以缓存它们,对于会话甚至数天,如果用户不删除它们。
这会减少网络流量以提供相同的功能内容不同时代。由于数据通常小于其等效的呈现HTML。

正如您今天所指出的,Javascript引擎非常快,以及运行它的计算机。每次将渲染工作发送到客户端时,都会为服务器节省一些处理时间并更快地提供数据。

我们处于另一个极端,因为我们在客户端运行所有这些,这就是我们为超快客户端渲染创建PURE的原因。由于这种分散化,我们的应用看起来非常快。

答案 2 :(得分:0)

为什么要将HTML作为JSON传递?只需发送回HTML并使用jQuery的$.html()函数将其放入<div>或其他任何内容。

至于Javascript中的模板,有Pure。如果你正在使用jQuery(我推荐它),it already has a template engine

答案 3 :(得分:0)

可以制作双重用途的模板 - 可以将它们渲染到占位符中以供js替换,同时可以为服务器输出正常渲染它们。只有少数几个模板需要具有双重目的 - 这些片段将由js替换。

我同意Ignacio,最好只保留每个模板的一个副本,这样你就不必为javascript写一个单独的副本了,但是我的方法肯定有改进的余地。如上所述。

理想情况下,您可能希望将模板编译为强大的javascript函数代码以及服务器输出的纯字符串。

Closure templates名为Soy,很好地解决了这个问题,但是(也许还没有)使用python,但是他们确实使用Java和Javascript。希望有一天会有python支持。

但即使发生这种情况,模板化语言也可能会受到更多限制,因为很难使.get_absolute_url(),过滤器等内容在python和javascript中同时运行 - 所有这些都是自动的。