0

Mircosoft の WebMatrix 2 のサンプル プロジェクトに基づいて、everyauth と express を使用して小さな webapp を開始しました。情報がビューに渡される方法と、ビューが部分ビューからどのように結合されるかについて理解できません。

ビューは、layout.jade と呼ばれる親ビューと、index.jade などの部分ビューから生成されます。ただし、これらのビューは相互に参照していないようです。

ルーティングは次のコードで管理されているようです:

app.configure(function() {
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(require('./middleware/locals'));
    app.use(express.cookieParser());
    app.use(express.session({ secret: '[secret]' }));
    app.use(everyauth.middleware());
    app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }));
    app.use(connect.static(__dirname + '/public'));
    app.use(app.router);
});

ルートは次のように定義されます。

app.get('/', function(req, res) {        
    res.render('index', { title: 'Home Page.  ' })
});

これにより、レイアウトと部分ビューが完全にマージされているように見えますが、その方法がわかりません。誰でもこれがどのように機能するかを明らかにできますか?

4

1 に答える 1

1

あなたが Ruby のバックグラウンドを持っていない場合、理解するのはちょっと難しいかもしれませんが、うまくいけばこれが役に立ちます。

デフォルトでは、エクスプレスは「レイアウト」をレンダリングします(あなたの場合はlayout.jade)。他の場所で指定されていない限り、レイアウトはすべてのページにレンダリングされます。これは、ヘッドが常に同じである Web サイトやブログでは役立つかもしれませんが、Web アプリケーションでは扱いにくいと思います。以下のコードをアプリの設定に追加することで、必要に応じて無効にすることができます。

app.set('view options', {layout: false});

次に、Express がビュー (この場合は index.jade) をレンダリングします。インデックスはコンテンツの大部分です。

Express は、ビュー内の部分ビューであるパー​​シャルもレンダリングできます。これはフッターなどのアイテムに役立ちますが、パフォーマンスに影響を与える可能性があります。パーシャルはビューとは異なることに注意することが重要です。

Jade/Tempting の経験がない人は、Jade の代わりに EJS を使用すると、HTML のように流れるため、学習曲線が短くなります。

以下は、私が最初に Express を使い始めたときに、ビュー/パーシャルとミドルウェアを理解するのに本当に役立ったビデオです。Nodetuts は優れたリソースです。Express のドキュメントも非常に価値のあるリソースに進化しました。コーディングを楽しんでください。頑張ってください!
エクスプレス ドキュメンテーション
nodetuts エクスプレス

于 2012-09-13T06:07:55.150 に答える