我在node.js有一个网站;要创建一个页面,请说mypage
我注意到我需要同时创建layout.jade
和mypage.jade
个文件。如果我将代码放在mypage.jade
中,则不会显示,所以首先我必须使用页面布局填充layout.jade
。
我的问题是,如何在layout.jade
内部引用我想在某个容器中加载mypage.jade
的内容,例如?我可以使用相同布局的不同页面吗?我怎么能这样做?
由于
答案 0 :(得分:30)
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
答案 1 :(得分:5)
派对有点晚了,但我最初努力找到答案...... 在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>
答案 2 :(得分:4)
答案 3 :(得分:1)
我知道一种方法给了我最好的结果,即使是角度(替代角度路线/ ng视图)
首先需要安装快速布局:
npm install --save express-layout
之后,express将在 views / 文件夹中搜索layout.jade文件。所以,你可以使用:
<强>视图/ layout.jade 强>
html
head
meta(charset='utf-8')
title= title
body
div!= body
<强>视图/ 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作为默认视图引擎,并且不会更改视图的默认文件夹。