Node.jsにウェブサイトがあります。ページを作成するには、mypage
と言います。_layout.jade
_ファイルと_mypage.jade
_ファイルの両方を作成する必要があることに気付きました。コードを_mypage.jade
_に配置すると表示されないため、最初に_layout.jade
_にページのレイアウトを入力する必要があります。
私の質問は、たとえば_layout.jade
_の内容を特定のコンテナにロードしたい_mypage.jade
_の内部をどのように参照すればよいですか?同じレイアウトで異なるページを作成できますか?これどうやってするの?
ありがとう
http://expressjs.com/guide.html#view-rendering
レイアウトを使用したくない場合は、それらをグローバルに無効にすることができます。
app.set('view options', {
layout: false
});
そうしないと、デフォルトでレイアウトが有効になり、Expressはyour_view_folder/layout.jadeで標準レイアウトを検索します。
ただし、ルートごとに個別のレイアウトを指定できます。
res.render('page', { layout: 'mylayout.jade' });
// you can omit .jade if you set the view engine to jade
レイアウトファイルは次のようになります。
doctype html
html(lang="en")
head
title Testing 123
body
div!= body
本文は「mypage.jade」から取得されることに注意してください。
編集:
アプリケーションの実際の例を次に示します。
アプリケーションファイル(ルートと設定を含む):
https://github.com/alexyoung/nodepad/blob/master/app.js
レイアウトファイル:
https://github.com/alexyoung/nodepad/blob/master/views/layout.jade
パーティーには少し遅れましたが、最初は答えを見つけるのに苦労しました... layout.jade
doctype html
html(lang="en")
head
body
h1 Hello World
block myblock
次にindex.jadeで
extends layout
block myblock
p Jade is cool
レンダリングします
<!DOCTYPE html>
<html lang="en">
<head>
<body>
<h1>Hello World</h1>
<p>Jade is cool</p>
</body>
</html>
angular(angular-route/ng-viewの代わりに)を使用しても、最高の結果が得られたアプローチを知っています
まず、express-layoutをインストールする必要があります。
npm install --save express-layout
その後、expressはviews /フォルダー内のlayout.jadeファイルを検索します。だから、その中であなたは使うことができます:
views/layout.jade
html
head
meta(charset='utf-8')
title= title
body
div!= body
views/home.jade
h1 Welcome aboard, matey!
server.js
var express = require('express'),
layout = require('express-layout');
var app = express();
app.get('/', function(req, res) {
res.render('home', {
title: 'Welcome!'
});
デフォルトでは、expressはviews /フォルダーでlayout.jadeを検索しますが、(はい、.jade拡張子を記述する必要はありません)を使用してデフォルトを変更できます。
app.set('layout', 'default');
その後、expressはデフォルトのレイアウトとしてviews/default.jadeを使用します。
また、特定のページで別のレイアウトを使用する場合は、以下を使用できます。
app.get('/', function(req, res) {
res.render('home', {
layout: 'login',
title: 'Welcome!'
});
ここで、expressはレイアウトとしてlogin.jadeをレンダリングします。
デフォルトのビューエンジンとしてJadeを使用しており、ビューのデフォルトフォルダーを変更していないと思います。
これが express-layout doc です。