jade在express.js中扩展了关键字问题

时间:2012-06-01 21:52:11

标签: express pug

好吧,所以我遇到了一个问题,即表达我的模板以使用extends / block关键字。我能够让索引模板正常工作;但是,当我尝试添加第二个模板时,'extends'似乎不起作用。我已粘贴下面的代码,我们将不胜感激! (供参考,我正在运行Express 2.5.8和节点0.6.12)

app.js:

var express = require('express')
  , routes = require('./routes');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'your secret here' }));
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
  app.set('view options', { layout: false, pretty: true });
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);
app.get('/login', routes.login);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port,     app.settings.env);
});

路由/ index.js:

exports.index = function(req, res){
  res.render('index', { title: 'rm-dash-r' })
};

exports.login = function (req, res) {
    res.render('login', { title: 'rm-dash-r' })
};

在views /目录中,有3个文件。 index.jade,main-layout.jade和login.jade。对于测试,登录和索引是相同的文件。

主layout.jade:

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body(style='margin: 0 22%;')
    div.container
        div.header
            a(href='/')
                span rm-dash-r

        div.stripes
            span

        div.nav
            a(href='/') Blog
            a(href='/') About
            a(href='/') Projects
            div.clearer
                span

        div.stripes
            span

        div.main
            div.left
                div.content

                    block content
...

index.jade / login.jade:

extends main-layout

block content
    h1 testing

基本上,'/'的路由没有任何问题,但登录路由只会呈现login.jade标记,除了页面顶部的extends main-layout。

如果有任何其他信息有助于了解,请告知我们。

1 个答案:

答案 0 :(得分:0)

好吧,经过重大的试验和错误,我似乎有了它的工作。出于某种原因,在向login.jade的第一行添加一个返回后(即,extends main-layout现在是第2行),它似乎都可以工作。

我一点也不知道为什么会这样,但是如果有人能说清楚,我有兴趣听一听。