0

我试图创建包含登录表单的主页(node.js 和 mongoDB 应用程序的一部分)。为了添加视图部分,我包含了带有返回 HTML 的函数的 js 文件,但我可以看到更好的是使用模板引擎。一切都很好,直到我在另一个中包含一个已编译的 swig 部分。主页输出正常,但登录部分输出类似于页面上的文本。如何将登录 HTML 输出为 HTML 而不是纯文本?

是否需要更多信息才能理解该问题?

先感谢您。

var swig  = require('swig');
var mainPage_tpl = swig.compileFile(__dirname+'/../views/mainpage_tpl.html');
var formLogin_tpl = swig.compileFile(__dirname+'/../views/login_tpl.html');

var loginOutput =  formLogin_tpl();
var mainPageOutput = mainPage_tpl({
    title: 'Sometitle',
    pagetitle: 'Somepagetitle',
    content: loginOutput
});

exports.get = function(req, res){
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(mainPageOutput);
    res.end();
}

mainpage_tpl.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>{{title}}</title>
    <link rel="stylesheet" href="/assets/reset.css" />
    <link rel="stylesheet" href="/assets/style.css" />
    <script type="text/javascript" src="/assets/jquery-2.0.0.js"></script>
    <script type="text/javascript" src="/assets/script.js"></script>
</head>

<body id="login_page">
    <h1>{{pagetitle}}</h1>
    <div id="content">{{content}}</div>
</body>
</html>
4

1 回答 1

0

如果你想包含文字 HTML,你需要告诉 Swig 不要使用safe过滤器转义它:

...
<div id="content">{{ content|safe }}</div>
...
于 2013-10-12T19:14:54.487 回答