【问题标题】:javascript template inheritancejavascript模板继承
【发布时间】:2011-04-08 23:18:39
【问题描述】:

在 Django 框架中,网页模板可以继承自其他模板。在您的子模板中,您定义覆盖父模板中同名块的代码块。我猜还有其他后端模板系统也以这种方式工作,但 Django 是我熟悉的。

现有的 javascript 模板系统是否支持 django 风格的继承?

【问题讨论】:

  • 您应该解释一下“django 风格的继承”是什么,然后也许有人会发布答案。
  • 只是created my own question 关于这个问题,更详细。希望这会有所帮助。
  • 看看nunjucks.jlongster.com它的灵感来自Django的jinja2,提供了一种漂亮的模板继承方式。

标签: javascript templates


【解决方案1】:

如果您想要模板继承和 DTL 语法,您正在寻找的是 Nunjucks

http://mozilla.github.io/nunjucks/

【讨论】:

    【解决方案2】:

    Mustache.js 支持partials,其工作方式与*类似。除此之外,我什么都没找到——也许我会成功的……

    * 好吧,它们根本不像 Django 的模板,但它们是我能找到的最接近的模拟物。

    【讨论】:

      【解决方案3】:

      jQuery 模板有一个 {{wrap}} 模板标签,类似于extend:

      http://api.jquery.com/template-tag-wrap/

      【讨论】:

        【解决方案4】:

        虽然不是“模板继承”,但是 Beard.js 可以通过创建模板引用帮助您重用模板,我认为这可以帮助您实现相同的目标。

        http://jspopisno1.github.com/Beard/#exmp_syntax-reference

        【讨论】:

          【解决方案5】:

          查看 Handlebars.js。它允许您定义可用于划分不同块的辅助方法,并以类似于 Rails 的content_for :my_areayield :my_area 的方式回显它们。

          【讨论】:

            【解决方案6】:

            是的,使用Dustjs,您可以让模板从通用基本模板继承其大部分内容。以下是它的工作原理,Dustjs:(参见“块和内联部分”部分)

            在文件“base_template”中:

            Start
            {+title/}
            Middle
            {+main/}
            End
            

            “继承” base_template 的模板:

            {>base_template/}
            {<title}
              Child Title
            {/title}
            {<main}
              Child Content
            {/main}
            

            结果如下:

            Start
            Child Title
            Middle
            Child Content
            End
            

            相关问题:似乎只支持1级继承:Is there a way to do more than one level of inheritance value overrides with dust.js?

            【讨论】:

              【解决方案7】:

              在向 Handlebars 添加模板继承方面正在进行一些工作。

              查看这个最近的 GitHub 问题:https://github.com/wycats/handlebars.js/issues/208
              还有这篇博文:Template Inheritance for Handlebars

              【讨论】:

                猜你喜欢
                • 2012-02-04
                • 1970-01-01
                • 1970-01-01
                • 2012-04-26
                • 2011-04-17
                • 2013-12-13
                • 2010-10-04
                • 2016-01-19
                • 2016-11-14
                相关资源
                最近更新 更多