玉模板引擎,如何使用layout.jade?

时间:2011-12-06 15:39:40

标签: node.js express pug

我在node.js有一个网站;要创建一个页面,请说mypage我注意到我需要同时创建layout.jademypage.jade个文件。如果我将代码放在mypage.jade中,则不会显示,所以首先我必须使用页面布局填充layout.jade

我的问题是,如何在layout.jade内部引用我想在某个容器中加载mypage.jade的内容,例如?我可以使用相同布局的不同页面吗?我怎么能这样做?

由于

4 个答案:

答案 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.x

使用Jade块,而不是布局

http://www.devthought.com/code/use-jade-blocks-not-layouts/

答案 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作为默认视图引擎,并且不会更改视图的默认文件夹。

这是express-layout doc