express 怎么给所有要 render 的页面赋值一个变量?

发布于 2022-09-06 20:12:06 字数 1349 浏览 6 评论 0

目前我的使用方法是

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

卸妝后依然美 2022-09-13 20:12:06

把你的变量挂载在 app.locals

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文