javascript模板继承
Posted
技术标签:
【中文标题】javascript模板继承【英文标题】:javascript template inheritance 【发布时间】:2011-04-08 23:18:39 【问题描述】:在 Django 框架中,网页模板可以继承自其他模板。在您的子模板中,您定义覆盖父模板中同名块的代码块。我猜还有其他后端模板系统也以这种方式工作,但 Django 是我熟悉的。
现有的 javascript 模板系统是否支持 django 风格的继承?
【问题讨论】:
您应该解释一下“django 风格的继承”是什么,然后也许有人会发布答案。 只是created my own question 关于这个问题,更详细。希望这会有所帮助。 看看nunjucks.jlongster.com它的灵感来自Django的jinja2,提供了一种漂亮的模板继承方式。 【参考方案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_area
和yield :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
【讨论】:
以上是关于javascript模板继承的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript OOP Javascript模板与构造函数和继承
Symfony2 Assetic + Twig 模板 JavaScript 继承