Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 使用布局呈现jade模板(不带express)_Templates_Node.js_Pug - Fatal编程技术网

Templates 使用布局呈现jade模板(不带express)

Templates 使用布局呈现jade模板(不带express),templates,node.js,pug,Templates,Node.js,Pug,在express中呈现模板时,您可以使用“视图选项”{layout:true}配置应用程序,呈现的模板将自动插入布局模板的正文本地 我试图从node.js中实现等效的行为渲染文件,但没有express framework(我只是将静态文件作为更大管道的一部分进行构建) 似乎有两种选择: 加载主模板和布局,转换为函数,首先渲染模板,然后将结果传递给布局函数 使用标准模板继承和块结构,但是我显式地使用命名块 这些是唯一的选择(公平的说,仍然是很棒的),还是我错过了一些技巧 编辑 如果有人感兴趣

在express中呈现模板时,您可以使用
“视图选项”{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的链接框架和提醒,这些都不是新问题。有时很容易迷失在云端:)