我正在为我的网站制作一个简单的博客应用程序并从数组中获取帖子。当我尝试在 posts 中使用 HTML 标签时,我发现它们没有呈现,页面的其余部分正常。
帖子:
{"post_id":1,
"post_title":"Title",
"post_body":"This is a test text. <b> I'm testing HTML.</b> "} ....
页面中的输出是:
This is a test text. <b> I'm testing HTML.</b>
服务器端:
var hbs = require('hbs');
// view engine setup
app.set('view engine', 'html');
app.engine('html', hbs.__express);
app.get('/post/:id', function(req, res) {
res.render('post_theme',
{post, title etc...});
});
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>Page</title>
<!-- font css -->
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="/lib/semantic/build/packaged/css/semantic.css">
<link rel="stylesheet" type="text/css" href="/stylesheets/style.css">
<!-- js -->
<script src="/javascripts/jquery.js"></script>
<script src="/lib/semantic/build/packaged/javascript/semantic.js"></script>
</head>
<body id="home">
<div class="ui menu" >
....
</div>
<h3 class="ui header">{{title}}</h3>
<p>{{body}}</p>
</body>
</html>
为什么 HTML 不渲染?
(实际上我不确定这是 Express 问题,我是 Web 开发新手。)
<小时/>解决方案:
根据Andrew Counts的回答,我使用了三个括号,问题就解决了。 {{{...}}}
最佳答案
在 Handlebars 模板中,HTML 代码会自动从变量中转义,以确保存储的值不会破坏页面代码流。如果您确定确实想要输出存储在变量中的 HTML,并且它不会破坏您的页面,您可以通过使用三大括号 {{{ }}} 来指示 Handlebars 不要转义 HTML
,或将值存储为“Handlebars.SafeString”类型。
关于javascript - HTML 未呈现 - Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367820/