Nodejs 如果jade layout 不在同一个目录下,该怎么办?
Nodejs 如果jade layout 不在同一个目录下,该怎么办?
extends …/layout
block content
h1 My Tasks
p
a(href=’/tasks/new’, class=‘btn primary’) Add a Task
-if(docs.length)
table
tr
th Task
each task in docs
tr
td #{task.task}
-else
p You don’t have any Tasks
我加了 …/layout 但是,加上去以后 body的内容就没有了 这是为什么?
4 回复
jade extends应该是支持相对路径,绝对路径(指option的basedir) 如果用extends layout是否可以? 把你的layout内容贴出来。
我已经查出来了,是因为我block下面没有缩进
当在 Node.js 中使用 Jade(现在称为 Pug)模板引擎时,如果布局文件不在同一个目录下,你需要确保路径正确,并且在子模板中正确地扩展布局。你的问题可能是因为路径或继承方式不正确导致的。
解决方案
- 确认路径正确:确保
../layout
路径指向正确的布局文件。 - 使用绝对路径:可以考虑使用绝对路径来引用布局文件,这样更清晰和可靠。
- 确保继承和块正确:确保在子模板中正确地扩展了布局,并且块(如
content
块)被正确地定义和填充。
示例代码
假设你的项目结构如下:
/project-root
/views
- index.pug (你的子模板)
- layout.pug (布局文件)
/routes
- index.js
布局文件 (layout.pug
)
doctype
html
head
title= title
body
block content
子模板 (index.pug
)
extends ./views/layout.pug
block content
h1 My Tasks
p
a(href='/tasks/new', class='btn primary') Add a Task
if(docs.length)
table
tr
th Task
each task in docs
tr
td #{task.task}
else
p You don't have any Tasks
关键点
- 路径:在
index.pug
中,使用相对路径./views/layout.pug
来引用布局文件。根据实际情况调整路径。 - 块定义:确保
block content
在布局文件中定义,并在子模板中正确地扩展和填充该块。 - 代码缩进:Pug 对缩进非常敏感,确保代码缩进正确。
通过以上步骤,你应该能够解决布局文件不在同一目录下的问题。如果仍然遇到问题,请检查路径是否正确,以及是否有其他语法错误。