0

了解しました。テンプレートをextends/blockキーワードで動作させるエクスプレスの問題が発生しています。インデックステンプレートを正常に機能させることができました。ただし、2つ目のテンプレートを追加しようとすると、「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。テストでは、ログインとインデックスは同じファイルです。

main-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

基本的に、「/」のルートは問題なく機能しますが、ログインルートは、ページ上部のextends main-layoutを除いて、login.jadeマークアップのみをレンダリングします。

他に知っておくと便利な情報がありましたら、お知らせください。

4

1 に答える 1

0

かなりの試行錯誤の後、うまく機能しているようです。何らかの理由で、login.jade の最初の行にリターンを追加した後 (つまり、 extends main-layout が 2 行目になりました)、すべてが機能しているように見えます。

なぜこれが事実なのか、私には少しもわかりませんが、誰かが光を当てることができるなら、私は聞いてみたいと思います.

于 2012-06-02T16:54:34.753 に答える