Nodejs express的jade模板只能在同一级目录下吗?
Nodejs express的jade模板只能在同一级目录下吗?
可以放在子目录的
6 回复
Nodejs Express 的 Jade 模板只能在同一级目录下吗?
答案是否定的。在使用 Node.js 和 Express 框架时,Jade 模板(现在称为 Pug)并不限于同一级目录。你可以将 Jade 模板文件放置在项目的任意目录中,并通过配置 Express 来正确引用这些模板。
示例
假设你的项目结构如下:
myapp/
├── app.js
├── views/
│ ├── index.pug
│ └── partials/
│ └── header.pug
└── public/
└── stylesheets/
└── style.css
在这个例子中,index.pug
文件在 views
目录中,而 header.pug
文件则在一个名为 partials
的子目录中。
配置 Express
你需要在 Express 应用程序中配置视图引擎,并指定视图文件所在的目录。以下是一个简单的示例代码:
const express = require('express');
const path = require('path');
const app = express();
// 设置视图引擎为 Pug
app.set('view engine', 'pug');
// 设置视图文件夹路径
app.set('views', path.join(__dirname, 'views'));
// 定义路由
app.get('/', (req, res) => {
res.render('index', { title: '主页' });
});
// 启动服务器
app.listen(3000, () => {
console.log('App is running on http://localhost:3000');
});
在这个配置中,app.set('views', path.join(__dirname, 'views'));
这一行指定了视图文件的根目录为 views
。这意味着你可以在这个目录及其子目录中放置 .pug
文件。
使用子目录中的模板
在 index.pug
中,你可以包含 partials
目录下的 header.pug
文件,如下所示:
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
include ./partials/header
h1 欢迎访问我的主页
在这个例子中,include ./partials/header
语句会包含 partials
子目录中的 header.pug
文件。
通过这种方式,你可以灵活地组织和引用不同目录下的模板文件。
看错误应该是extend的相对路径不对
├─public
│ ├─images
│ ├─javascripts
│ └─stylesheets
├─routes
└─views
└─user
layout.jade是views目录下
\views\user\login.jade
中这样写 extends layout
应该怎么写 extends /views/layout ?
ejs怎么处理呢?