如何强制表达将字符串解释为HTML代码?

时间:2017-01-12 23:53:35

标签: node.js express pug

我开始使用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这个确切的字符串

那么,我的错误是什么?

1 个答案:

答案 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在每个请求?

  1. 这将是非常反干的。
  2. 那会很慢。
  3. 这将是内存密集型的。
  4. 那将是一场维护噩梦。
  5. 关注the convention它会帮到你。