Express + Jade在解析json的时候,html标签也当成普通字符串了,怎么解决呢?
//postList.json
[
{
"title": "天文学家发现'巨型地球'",
"date": "2014.06.08",
"post": "<p>大自然总是会让人捉摸不透</p><p>发现第一颗外星行星,不过是20年前的事情。在这一领域,我们依然是初学者。</p><p>我们才刚刚开始发现惊奇。在茫茫宇宙之中,还有更多古怪之地等着我们去发现。</p>"
},
{
"title": "天文学家发现'巨型地球'",
"date": "2014.06.08",
"post": "<p>大自然总是会让人捉摸不透</p><p>发现第一颗外星行星,不过是20年前的事情。在这一领域,我们依然是初学者。</p><p>我们才刚刚开始发现惊奇。在茫茫宇宙之中,还有更多古怪之地等着我们去发现。</p>"
}
]
//postlist.jade
article.site-list
- each val in posts
section.list
h3.title= val.title
p.date
span 发表于
time= val.date
div.content= val.post
//index.js
var express = require('express');
var router = express.Router();
var datapostlist = require('../data/postList.json');
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', {
title: 'jaySite',
userName: 'Jay.Creater',
userEmail: 'jaycreater@163.com',
posts: datapostlist
});
});
module.exports = router;
//app.js
...
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(require('node-compass')({mode: 'expanded'}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
div.content!= val.post
See http://jade-lang.com/reference/code/
更习惯用 #{locals.xxx} 这种写法。
然后 !{locals.xxx} 就是不转义的写法,默认会转义
我也想问这个问题,我没有用jade,express抛出来的直接是字符串
如果是服务器传过来的数组对象如 items = [{title: 'hello'}, {title: 'b'}]
要想显示出来:
由于jade为了保护而转义了html里的标签和脚本,使用!=可以阻止转义:
div!=item.title
可参考jade的文档:http://jade-lang.com/reference/code/