【问题标题】:Client-Side (JavaScript) Django/Jinja-like template inheritance客户端 (JavaScript) 类 Django/Jinja 模板继承
【发布时间】:2011-10-24 07:17:02
【问题描述】:

我正在寻找一种方法来对我拥有的一组 .html 文件进行模板继承。

假设我有一个base.html 文件,其中包含我网站所有页面的通用 HTML,即页眉、页脚等。每个页面,包括主(索引)页面,都需要从这个模板 HTML 文件继承。

现在,这可以在服务器端使用Django's Jinja template langauge 实现。但这对我来说不是一个好的解决方案。我的 HTML 页面是远程存储的,我无法控制存储它们的服务器。这必须在客户端完成,无论是否使用 JavaScript。

Somebody asked about this before,而我发现的唯一半生不熟的解决方案是使用 Mustache's partials,它并不能真正发挥作用。

有人知道在客户端执行此操作的方法吗?

【问题讨论】:

    标签: javascript django templates django-templates


    【解决方案1】:

    jQuery 模板有一个{{wrap}} 模板标签 可以用于此。

    【讨论】:

    • 我不认为这允许模板继承,就像 Mustache 的部分行为一样。你确定吗?
    【解决方案2】:

    我只是出于同样的目的发布了这个:https://github.com/ericclemmons/jinja.js

    【讨论】:

      【解决方案3】:

      1。 是的,使用 Dustjs,您可以“让模板从通用基本模板继承其大部分内容”

      在此处查看 Dustjs 文档:Dustjs,“块和内联部分”部分。

      (我在这里发布了一个相关问题的答案:https://stackoverflow.com/a/12432034/694469


      2。 还有一些关于向 Handlebars 添加模板继承的工作正在进行中,请参阅我对这个问题的“其他版本”的另一个回答:https://stackoverflow.com/a/12432490/694469

      它链接到这个 GitHub 问题:https://github.com/wycats/handlebars.js/issues/208,以及这篇博文:Template Inheritance for Handlebars

      【讨论】:

        【解决方案4】:

        Jade 提供完整的模板继承:https://github.com/visionmedia/jade#a11

        除了完全覆盖块之外,您还可以将内容附加或添加到块中。这是从文档中劫持的示例:

        在 layout.html 中定义一个基本模板:

        html
          head
            h1 My Site - #{title}
            block scripts
              script(src='/jquery.js')
          body
            block content
            block foot
              #footer
                p some footer content
        

        添加一些脚本标签并替换 content.html 中的内容部分:

        extends layout
        
        block append head
          script(src='/vendor/three.js')
          script(src='/game.js')
        
        block content
          .sidebar
            block sidebar
              p nothing
          .primary
            block primary
              p nothing
        

        【讨论】:

          猜你喜欢
          • 2012-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-08
          • 2014-08-07
          • 2012-04-26
          相关资源
          最近更新 更多