在Jade(现更名为Pug)模板引擎中,实现模板叠加可以通过以下两种方式实现:
一、使用 `include` 指令引用外部文件
基础布局文件
创建一个基础布局文件(如 `layout.jade`),包含公共部分(如头部、底部)和可替换内容区域(如 `block content_main`)。
```jade
doctype html
html
head
title blog
link(rel='stylesheet', href='/stylesheets/style.css')
body
divm_div
include top
block content_main
include footer
```
引用布局文件
其他模板文件(如 `index.jade`)通过 `extends` 引用布局文件,并在 `block content_main` 区域填充具体内容。
```jade
extends layout
block content_main
divm_left
divm_left_login
divlogin_success
```
嵌套引用
若需在 `content_main` 中引用其他Jade文件,可使用 `include` 指令。例如,在 `index.jade` 中引用 `sidebar.jade`:
```jade
block content_main
include sidebar
divmain_content
```
对应的 `sidebar.jade` 可以包含导航栏、侧边栏等公共组件。
二、使用模板继承(类似ASP.NET Master Page)
通过 `extends` 和 `block` 结构实现更复杂的布局叠加:
Master 模板(layout.jade)
定义整体结构,包含 `block` 区域供子模板填充。
```jade
doctype html
html
head
title blog
link(rel='stylesheet', href='/stylesheets/style.css')
body
divm_div
block header
block content
block footer
```
子模板(index.jade)
继承Master模板,填充具体内容到对应的 `block` 区域。
```jade
extends layout
block header
divm_left
divm_left_login
divlogin_success
block content
divmain_content
block footer
divfooter_info
footer
```
多级继承
支持多级模板继承,子模板可进一步继承父模板的 `block`,形成嵌套结构。
注意事项
使用 `include` 时,被引用的文件会被合并到父模板中,类似HTML的 `iframe` 包含关系;
`extends` 用于定义基础结构,所有子模板必须继承该结构并填充指定 `block`;
模板文件扩展名通常为 `.jade` 或 `.pug`,需确保服务器正确解析。
通过以上方法,Jade模板可实现灵活的组件复用与布局叠加,提升开发效率。