4

我的文件夹结构如下:

/app
   |-routes.js
/public 
   |-index.html
server.js

Server.js 看起来像这样:

var nunjucks = require('nunjucks');
var express        = require('express');
var app            = express();
nunjucks.configure('public', { autoescape: true, express: app });
var port = process.env.PORT || 8080; 
app.use(express.static(__dirname + '/public'));
require('./app/routes')(app); // configure our routes
app.listen(port);               
exports = module.exports = app;

app/routes.js 看起来像这样:

module.exports = function(app) {
        app.get('*', function(req, res) {
            res.render('index.html', { awesome: 'page-title' }); 
        });
    };

public/index.html 看起来像这样:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <base href="/">

    <title>{{awesome}}</title>

</head>
<body>
        <h1>{{ awesome }}</h1>    
    </div>
</body>
</html>

当我启动我的节点应用程序并浏览到 localhost:8080 时,页面标题是字符串 {{ awesome }} 并且包含字符串 {{ awesome }} 而不是所需的“page-title”。为什么 nunjucks 没有将变量渲染到模板中?

4

2 回答 2

4

您必须拆分“公共”文件夹。公开的东西,nunjucks 无法处理。它是静态的(您如此声明)。将您的 nunjucks 模板放在文件夹中,例如“views”

/app
   |-routes.js
/public 
   |css/
   |img/
/views
   |- index.html
server.js

nunjucks.configure('views', ...)
于 2014-11-06T21:50:26.103 回答
0

如果您在 Windows 上使用 thinkjs:您的 view.js 应该如下所示:

export default {type: 'nunjucks',root_path: think.ROOT_PATH + '\\view',};

于 2018-03-16T11:04:51.927 回答