Templates 使用布局呈现jade模板(不带express)
在express中呈现模板时,您可以使用Templates 使用布局呈现jade模板(不带express),templates,node.js,pug,Templates,Node.js,Pug,在express中呈现模板时,您可以使用“视图选项”{layout:true}配置应用程序,呈现的模板将自动插入布局模板的正文本地 我试图从node.js中实现等效的行为渲染文件,但没有express framework(我只是将静态文件作为更大管道的一部分进行构建) 似乎有两种选择: 加载主模板和布局,转换为函数,首先渲染模板,然后将结果传递给布局函数 使用标准模板继承和块结构,但是我显式地使用命名块 这些是唯一的选择(公平的说,仍然是很棒的),还是我错过了一些技巧 编辑 如果有人感兴趣
“视图选项”{layout:true}
配置应用程序,呈现的模板将自动插入布局模板的正文
本地
我试图从node.js中实现等效的行为渲染文件,但没有express framework(我只是将静态文件作为更大管道的一部分进行构建)
似乎有两种选择:
- 加载主模板和布局,转换为函数,首先渲染模板,然后将结果传递给布局函数
- 使用标准模板继承和块结构,但是我显式地使用命名块
编辑 如果有人感兴趣,这里是第一个选项的大致部分:
//加载jade
var jade=需要(“jade”);
//加载实际模板文本
var layout=fs.readFileSync('layout-path','utf8')
tpl=fs.readFileSync('tpl-path','utf8');
//编译模板呈现函数
layout=jade.compile(布局,{pretty:true,文件名:'layout path'});
tpl=jade.compile(tpl,{pretty:true,文件名:'tplpath'});
//渲染jade模板,传递信息
var output=layout({body:tpl({local1:some\u var,local2:some\u var})}
//将呈现的内容写入文件
fs.writeFileSync('output.html',output);
我相信答案是“不”,你没有错过任何技巧。在我看来,你概述的两个选项是使用jade生成文件的两种最简单的方法。当然,也有很多非jade方法。例如,你可以将内容与方法合并,好的旧String.replace
,或者将布局拆分为单独的页眉和页脚r片段文件,并将它们按头、体、脚顺序连接起来。我认为Express 3.0放弃了布局(至少默认启用),转而支持使用命名块的模板继承,因此这可能有助于您的决策:(还可以在初始化新项目时查看Express.js生成的存根:)@PuerkitoBio感谢您提供的信息;值得指出,但我真正的问题是,这些是唯一的方法吗?将这些类型的东西放在一起的人通常会为常见的用例嵌入一个短路-我只是不太聪明,无法找到它们!@AJ。感谢您提供的片段。谢谢您-我感谢与Flattiron f的链接框架和提醒,这些都不是新问题。有时很容易迷失在云端:)