通过consolidate.js获取Node.js Express 3.x模板继承的问题

时间:2012-10-12 05:52:31

标签: node.js templates inheritance express swig

我可以通过这段代码获得“独立”模板,但我无法使用模板继承。有什么我忽略的或任何其他人都知道的警告吗?

错误:在“... /views/index.html”的第3行找到循环扩展!

app.js:

var express = require('express')
  , cons = require('consolidate')
  , http = require('http')

var app = express();

app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.set('view options', { layout: false });

app.get('/', function(req, res){
  res.render('index.html', { header: 'Express' });
});

http.createServer(app).listen(3000, function(){
  console.log("Express server listening on port 3000");
});

的index.html

{% extends 'base.html' %}

{% block content %}<h1>{{ header }}</h1>{% endblock %}

base.html文件

<!DOCTYPE html>

<html>
    <head>
        <title>{% block title %}Express{% endblock %}</title>
    </head>

    <body>
        {% block content %}{% endblock %}
    </body>
</html>

2 个答案:

答案 0 :(得分:3)

您可以为root本身设置allowErrorsswig来解决此问题:

var express = require('express')
  , cons = require('consolidate')
  , http = require('http')
  , swig = require('swig')

swig.init({ root: __dirname + '/views', allowErrors: true });

// ...

有关详细信息,请参阅Using Swig with express.jsSwig API

答案 1 :(得分:0)

我不确定swig,但是在express3中,他们删除了模板继承,部分和布局,并将其留给模板引擎来实现。有插件可能会让你回来。

ejs:https://github.com/RandomEtc/ejs-locals

https://github.com/publicclass/express-partials