【发布时间】:2018-08-08 18:59:20
【问题描述】:
回答:我发现data 没有传递给 nunjucks 模板。我在 index.njk 中用{{title}} 和{{sub}} 替换了{{data.title}} 和{{data.sub}},现在我的模板呈现了对象变量。感谢 antonmyrberg 和 petarr。
我正在尝试将一个对象传递给我的 nunjucks 模板,该对象位于一个模块中的 res.render 中,该模块正在导出到快速路由器。当我访问路由时,index.njk 呈现,但对象属性不显示。
app.js
// -- Create express application --
const express = require('express');
const app = express();
// Require in Express Router
const router = require('./router');
// Require in Nunjucks and configure nujucks to install to Express
const nunjucks = require('nunjucks');
nunjucks.configure('views', {
express: app
});
// index page
app.use('/', router);
// -- Listen on port 3000 --
app.listen(3000, () => {
console.log('Listening on Port 3000');
});
路由器/index.js
const express = require('express');
const router = express.Router();
let index = require('../modules/index.js');
router
.route('/')
.get(index.landing);
module.exports = router;
我使用传递路径的 app.js 中的 app.get 运行相同的模板,并使用位于 module.exports.landing 中的相同代码,在模板呈现时显示对象中的变量。但我无法让它与这种布局一起使用。
模块/index.js
module.exports.landing = (req, res) => {
console.log('works');
let data = {
title: 'Nunjucks',
sub: 'Using nunjucks'
} ;
res.render('index.njk', data);
}
views/index.njk
<body>
<h1>{{data.title}}</h1>
<p>{{data.sub}}</p>
</body>
【问题讨论】:
标签: javascript express nunjucks