ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 使用Node.js,Handlebars和Express进行模板继承

2019-06-09 15:22:59  阅读:325  来源: 互联网

标签:javascript node-js inheritance express handlebars-js


我刚刚开始使用Node.js,所以我正在构建非常简单的应用程序以便练习基础知识.我试图让一些像Django一样的模板继承工作,但我对如何做它有点不知所措.

我知道图书馆“快递把手”包括布局的概念,我认为这可能是最好的方法,但乍一看我不知道它是否允许继承的步骤,或者使用它来替换不同的块(我看到了插入其他模板的一般布局代替{{{body}}}标签,尽管可能有更多的技巧).

所以,我的问题是:如何实现多层模板继承(同样,将子内容插入不同的单独块,而不是单个块)?我正在使用Node.js,Express和把手,但如果后两者不可能,我不介意尝试其他框架或模板语言.

谢谢!

编辑:

我的意思的伪编码示例:

首先,我们可以有一个共同的外部模板:

<html>
    <head></head>
    <body>
        <h1> Main Title </h1>
        <h2> {{section name block}} </h2>
        <h3> {{subsection name block}} </h3>
        {{content block}}
    </body>
</html>

然后在它下面的另一个(中间模板),替换一些外部的块(并可能添加其他块):

{{inheriting from outer template}}
{{section name block}} Section Three {{/block}}

最后是一个内部的,它将是从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}}

处理内部模板时的结果是:

<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>

解决方法:

它不是100%清楚你要求的模板术语“继承”,但手柄模板可以包括模板,其中可以包含其他模板,其中可以包含模板,以便您可以根据需要进行嵌套.

例如,我只使用语法:

{{> common_header}}

将common_header模板嵌入当前模板中. common_header本身可以嵌入其他模板,依此类推.

您还可以使用布局(已讨论过here),它允许您拥有类似于主人的模板,可以将不同的内容呈现到该模板中.

仅供参考,使用Handlebars herehere以及Handlebars here的布局扩展以及Handlebars here中使用布局的更多讨论讨论了类似Django的模板继承.

标签:javascript,node-js,inheritance,express,handlebars-js
来源: https://codeday.me/bug/20190609/1205688.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有