Nodejs中jade模板的layout.jade里面如何得到当前请求的action名字?
Nodejs中jade模板的layout.jade里面如何得到当前请求的action名字?
Node.js 中 Jade 模板的 layout.jade
里如何得到当前请求的 action 名字?
在 Node.js 应用中使用 Jade(现称为 Pug)模板引擎时,有时我们希望在全局布局文件(如 layout.jade
)中获取当前请求的 action 名称。为了实现这一目标,我们可以利用 Express 框架提供的中间件来传递这些信息。
示例代码
首先,假设你有一个 Express 应用,并且你已经设置了一个中间件来处理路由和传递必要的数据到视图。
-
设置中间件
在你的 Express 应用中,你可以添加一个中间件来将当前请求的 action 名称传递给视图。
const express = require('express'); const app = express(); // 假设你有一个名为 'actionName' 的变量 app.use((req, res, next) => { res.locals.actionName = req.route.path; // 这里可以自定义逻辑来获取 action 名称 next(); }); app.set('view engine', 'pug'); app.get('/home', (req, res) => { res.render('home', { title: 'Home Page' }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
-
修改 layout.jade
现在,你可以在
layout.jade
文件中访问actionName
变量:doctype html html head title= title body block content script. console.log('Current Action Name:', '#{actionName}');
-
在子视图中使用
在子视图(如
home.pug
)中,你可以渲染布局并传递必要的数据:extends layout block content h1= title p Welcome to the Home Page
解释
-
中间件:通过中间件
res.locals
,我们将actionName
设置为当前请求的路径或其他自定义逻辑。 -
布局文件:在
layout.jade
中,你可以直接使用#{actionName}
来访问这个变量。这使得布局文件能够动态地显示当前请求的 action 名称。 -
子视图:子视图(如
home.pug
)通过继承layout.jade
并填充block content
部分来完成页面的具体内容。
这样,无论用户请求哪个页面,layout.jade
都能获取并显示当前请求的 action 名称。
比如根据当前action设置一些路径,或者Seo的关键字,meta信息
route弄个变量?
在Node.js中使用Jade(现称为Pug)模板引擎时,如果你想在layout.jade
文件中获取当前请求的action名字,可以通过将这个信息传递给视图来实现。以下是一种常见的方法:
- Express框架设置:如果你使用的是Express框架,可以在路由处理函数中将当前请求的action名称作为变量传递给视图。
app.get('/somepath', function(req, res) {
var actionName = 'someAction'; // 获取或设置当前请求的action名字
res.render('somepage', { action: actionName });
});
- 在布局文件中使用:然后在你的
layout.jade
文件中,你可以通过props的方式访问这个变量。
doctype
html
head
title My Application
body
block content
script.
console.log('当前请求的action名字是:', '#{action}');
在这个例子中,#{action}
会显示你在渲染视图时传递给它的值。注意,这里的action
变量需要确保在每次渲染页面时都正确传递,这样才能在布局文件中正确显示。
示例总结
- 在路由处理程序中,通过
res.render()
方法将action
变量传递给视图。 - 在布局文件
layout.jade
中,使用#{action}
来访问这个变量。
这种方法允许你根据不同的请求动态地改变布局中的内容。