Node.js,Jade / Pug,如何提供完整和部分模板?

时间:2016-05-23 12:54:16

标签: javascript node.js pug pugjs

如果通过ajax发出请求,我想只发送page1.jade中的块内容,如果它是正常的GET,它应该用layout.jade中内置的块来回答

1 个答案:

答案 0 :(得分:2)

Jade不支持conditional layout switch

if type=='get'
  extends layout
block content
  p This is block content

这将呈现具有布局的页面,而不管变量名称。

  

方法1

一种简单的方法是在单独的文件中定义块内容并将其包含在page1.jade中,然后您可以独立访问该块。

<强> layout.jade

html
head
title My Site - #{title}
block scripts
body
  block content
  block foot

<强> page1.jade

extends layout

block content
  include ./includes/block.jade

<强>包括/ block.jade

p This is the block content

这将是处理路线文件中的请求的方法

router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
router.get('/block', function(req, res, next) {
  res.render('includes/block', { title: 'Express' });
});

修改它以处理AJAX /浏览器请求。

  

方法2

其他 cleaner 方式是修改layout.jade本身的条件

<强> layout.jade

if type=='get'
  html
  head
  title My Site - #{title}
  block scripts
body
  block content
  block foot

每次渲染同一页面时从路由器传递变量:

router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express',type:'get' });
});
router.get('/block', function(req, res, next) {
  res.render('index', { title: 'Block Express' });
});