Nin*_*and 6 javascript inheritance node.js express handlebars.js
我刚刚开始使用 Node.js,所以我正在构建非常简单的应用程序以练习基础知识。我试图让一些类似 Django 的模板继承工作,但我对如何去做有点不知所措。
我知道库“express-handlebars”包括布局的概念,我认为这可能是最好的方法,但乍一看我不知道它是否允许不止一步的继承,或者使用它来替换不同的块(我看到了一种通用布局,其中插入了其他模板来代替 {{{body}}} 标记,尽管很可能还有更多技巧)。
所以,我的问题是:如何实现多层模板继承(还有,孩子将内容插入不同的单独块,而不是单个块)?我正在使用 Node.js、Express 和 handlebars,但如果后两者无法实现,我不介意尝试其他框架或模板语言。
谢谢!
编辑:
我的意思的伪代码示例:
首先,我们可以有一个通用的外部模板:
<html>
<head></head>
<body>
<h1> Main Title </h1>
<h2> {{section name block}} </h2>
<h3> {{subsection name block}} </h3>
{{content block}}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在它下面的另一个(中间模板),替换一些外部块(并可能添加其他块):
{{inheriting from outer template}}
{{section name block}} Section Three {{/block}}
Run Code Online (Sandbox Code Playgroud)
最后是一个内部的,这将是从 javascript 代码调用的那个:
{{inheriting from middle template}}
{{subsection name block}} Subsection Two {{/block}}
{{content block}}
<p>This is the content of Section Three, Subsection Two.</p>
{{/block}}
Run Code Online (Sandbox Code Playgroud)
处理内部模板时的结果将是:
<html>
<head></head>
<body>
<h1> Main Title </h1>
<h2> Section Three </h2>
<h3> Subsection Two </h3>
<p>This is the content of Section Three, Subsection Two.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并不是 100% 清楚您对模板的术语“继承”的要求,但车把模板可以包含模板,而这些模板又可以包含其他模板,而其他模板又可以包含模板,因此您可以嵌套任意深度。
例如,我只使用语法:
{{> common_header}}
Run Code Online (Sandbox Code Playgroud)
将common_header模板嵌入到当前模板中。它common_header本身可以在其中嵌入其他模板等等。
您还可以使用布局(此处讨论),它允许您拥有一个类似主模板的模板,可以将不同的内容渲染到其中。
仅供参考,这里和这里讨论了使用 Handlebars 的类似 Django 模板继承,这里讨论了 Handlebars 的布局扩展,这里还讨论了在 Handlebars 中使用布局的更多讨论。
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |