express 怎么给所有要 render 的页面赋值一个变量?
目前我的使用方法是
const express = require('express');
const Router = express.Router();
const path = require('path');
const src = path.resolve(__dirname, '../src/');
// 自动路由
const fs = require('fs'),
PathRouter = [];
// 同步读取文件
fs.readdirSync(`${src}/views`).forEach(file => {
if (file.indexOf('.html') > -1) {
PathRouter.push(file.substr(0, file.indexOf('.html')));
}
})
PathRouter.forEach(function(item) {
Router.get(`/${item}`, function(req, res) {
let {deviceId} = req.cookies;
if (item === 'index') {
return res.redirect('/'); // 重定向到 /
}
res.render(`${item}.html`, {deviceId}); // 这里在给所有要渲染的页面赋值一个变量
});
});
module.exports = Router
但是我现在改配置,改结构了,不用上面的方式了。
我用的是这样的方式
IndexController.js
module.exports = function(app) {
app.get('(\/|\/index)', function(req, res) {
let { deviceId } = req.cookies;
res.render('index.html', {
deviceId
});
});
}
那么如果有 OtherController.js,我又要重新赋值一次了
module.exports = function(app) {
app.get('(\/|\/index)', function(req, res) {
let { deviceId } = req.cookies;
res.render('other.html', {
deviceId
});
});
}
所以想知道 express 怎么给所有要 render 的页面赋值一个变量?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
把你的变量挂载在
app.locals
下