我开始使用node.js,特别是express.js。
鉴于我希望尽可能D.R.Y.,我决定只有一个index.pug
- 模板,其中包含单个HTML元素main.content
。实际内容由pug.renderFile()
基于摘录创建,存储在<name>.pug
文件中。
整体情况如下:
SERVER.JS
response.render("index", {
content: pug.renderFile(excerpt("aboutus"), {
title: "About Us",
subtitle: "Some subtitle here",
article: "Some text here"
})
});
ABOUTUS.PUG
h1= title
h3= subtitle
article= article
INDEX.PUG
//- html-head-body routine
main.content= content
问题是pug.renderFile()
以字符串的形式返回HTML代码,而不是在main.content
元素中获取三个元素,我得到这个元素的.innerHTML
这个确切的字符串
那么,我的错误是什么?
答案 0 :(得分:1)
这种可怕的做法。你需要使用扩展。不打两次电话给哈巴狗。您将演示文稿烘焙到错误的图层中。这会让你迟到。
更不用说,您将HTML强制转换为中间字符串,并进行无法优化的额外函数调用。
SERVER.JS
response.render("aboutus", {
title: "About Us",
subtitle: "Some subtitle here",
article: "Some text here"
});
ABOUTUS.PUG
extends index
block content
h1= title
h3= subtitle
article= article
INDEX.PUG
// html-head-body routine
main.content= content
如果这没有意义,请考虑一下您的系统将如何扩展。我们假设您有一个用于导航栏的哈巴狗文件,一个用于页脚,一个用于标题等。您可以将它们全部串在一起并将它们传递到您的index.pug
在每个请求?
关注the convention它会帮到你。