1

我可以使用此代码获得“独立”模板来渲染得很好,但我无法让模板继承工作。有什么我忽略的东西或任何其他人知道的警告吗?

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

应用程序.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");
});

索引.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>
4

2 回答 2

3

您可以通过设置rootallowErrorsswig自己解决此问题:

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

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

// ...

有关更多信息,请参阅将 Swig 与 express.jsSwig API一起使用。

于 2012-10-12T07:34:42.070 回答
0

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

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

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

于 2012-10-12T06:15:17.880 回答