javascript - Node.js、Jade/Pug,如何提供全部和部分模板?

标签 javascript node.js pug pugjs

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

最佳答案

Jade 不支持conditional layout switch :

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

无论变量名称如何,这都会使用布局呈现页面。

METHOD 1

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

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

includes/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/浏览器请求。

METHOD 2

另一种更干净的方法是修改您的 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' });
});

关于javascript - Node.js、Jade/Pug,如何提供全部和部分模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37391581/

相关文章:

javascript - 是否可以将 MooTools 与 Prototype 和 JQuery UI 混合使用?

javascript - 如何更改 Angular Js 或 Jquery 中的日期格式?

node.js - Node.js 和 Kakashi 中的日语音译

javascript - 两个脚本出现 Jade 渲染错误,Uncaught SyntaxError : Unexpected token <

javascript - 当用户单击表单输入字段时添加和删除 CSS 类选择器 - 示例

javascript - 替换 contenteditable div 中的单词并正确设置插入符号位置

android - appfog 上的 Node.js Express 服务器 : sessions lost on page refresh when using chrome on android

javascript - AJAX 请求正文为空(无 jQuery)

javascript - 有没有办法在 Harp.js 中使用 Jade block ?

javascript - jade模板只需要编译一次吗?