【问题标题】:Client side vs server side vs Hybrid templating for django backenddjango后端的客户端vs服务器端vs混合模板
【发布时间】:2012-12-13 02:55:02
【问题描述】:

我想知道是否值得转换为更通用的模板引擎,例如 mustache 或 handlebars,而不是 Django 模板。我自己看到的选项是:

  1. 使用 Django 模板(仅限服务器端)
  2. 完全转换为 Mustache/Handlebars 等
  3. 使用混合方法:Mustache/Handlebars 以及在适用的情况下使用 Django 模板(最丑的选项?)

虽然转换为像系统这样的 Mustache/Handlebars 为我在客户端和服务器端使用相同模板带来了灵活性,但我确实失去了 Django 模板系统提供的某些优势(例如模板继承)。

我知道支持和反对客户端模板以及服务器端模板的争论非常激烈。一些人认为在繁忙的服务器上渲染 HTML 可能会使其变慢,而另一些人则认为在浏览器上从 JSON 渲染 HTML 可能会使客户端变慢。

我也知道为不支持 JavaScript 的设备使用服务器端 html 呈现的争论,但现在大多数设备都支持 JavaScript。

是否有从 Django 模板系统转换为 Mustache/Handlebars 等的真实而明确的理由?

谢谢。

【问题讨论】:

    标签: javascript django handlebars.js mustache client-side-templating


    【解决方案1】:

    您的问题并没有真正的具体答案。在我看来,Mustache 风格的客户端模板的优势远远超过了支持服务器端模板的优势。 Mustache 风格的客户端模板可移植、可扩展、易于其他开发人员理解,并且适用于所有浏览器(甚至 IE6)。如果您计划让您的 Web 应用程序变得更大,那么当您的页面生成被卸载到用户浏览器而不是在服务器端处理时,您将会感谢自己。

    Django 提供的模板继承被高估了——你可以用 Mustache 模板和一点 JavaScript 来完成同样的事情。不要试图构建大型的包罗万象的模板。将您的模板构建为可重复使用的小型构建块,并使用 JavaScript 将它们拼凑在一起,形成构成您的 Web 应用程序的组件。

    当然,当您在客户端上呈现所有内容时,SEO 会受到影响,但这可能对您的应用程序来说是个问题,也可能不是。

    【讨论】:

    • 谢谢。经过更多思考之后,在我看来,将服务器端模板用于静态内容,而将客户端模板用于动态内容(例如页面上的更新)可能是有意义的。对于静态页面,在我的情况下,从服务器发送的 HTML 数量非常有限,但对于动态内容,可能有许多小部件实例(如博客的 cmets 集合),在这种情况下只发送 JSON从服务器而不是 HTML 肯定会具有带宽/效率优势。想法?
    • 这是一篇我觉得很有帮助的文章:ryanflorence.com/2012/client-v-server-templating
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2013-04-24
    • 2012-06-14
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多