我会试一试并解释一些必需品,因为你可能混合了一些玉石技术,并被定义所困惑“块”。
我给你两个例子针对您的用例(略有修改):
包括
使用包括技术手段,你在你的主人(布局)模板的替代内容其他模板文件的内容。当包含其他玉模板文件时,可能会将附加内容添加到包含的文件中,以便在某个位置附加或放弃。
main.jade:
div
include heading
div.span3
a IamSomewhatRight
heading.jade:
div.span4
a IamLeft
div.span3
a IamRight
结果:
div
div.span4
a IamLeft
div.span3
a IamRight
div.span3
a IamSomewhatRight
正如你看到的,附加和可选内容(即include heading
以下的块)默认附加到包含文件的内容。使用关键字yield
来定义替换的确切位置。 请注意这与块定义没有任何关系,它们由关键字block
定义,如下所述。
块
如果主模板中定义块,你可以扩展这个模板混凝土的使用和谈论如何替换这些块 - 那就是你继承的模板中完成:
main.jade:
div
block headingleft
block headingright
标题。玉:
extends main
block headingleft
div.span4
a IamLeft
block headingright
div.span3
a IamRight
div.span3
a IamSomewhatRight
结果是完全一样的结果中的“包括”的例子。当然,将heading.jade
转换为myview.jade
并涵盖整个页面生成过程可能是有意义的。
现在,有不同的情况和要求使用包含或块或两者结合以各种方式组合您的意见(这是哲学的一种!)。在我看来,使用继承是消除重复几个“主要文件”的好方法 - 或者某种基于控制器的视图组合技术定义占位符变量(或任何其他),这往往会导致混乱的代码不遵循“分离关注点“的方法。
嘿感谢您的解释,我已经知道大部分,但我试图实现的东西(即重复使用模板在特定的地方)使用块+包括其实应该通过yield + include来接近。谢谢。 – user1583920