Во время моего исследования о том, как лучше обрабатывать глобально используемые данные, я нашел этот вопрос См. 2. Ответ
Поэтому я интегрировал этот подход в свою базу кода и столкнулся с проблемой,который я хотел бы обсудить.Надеюсь, что кто-то может помочь мне здесь.
Я создал новый файл middleware.js
, содержащий почти тот же код, что и в ответе SO, только с небольшими изменениями:
const url = require('../db/url');
module.exports = {
render: function (view) {
return function (req, res, next) {
res.render(view);
}
},
globalLocals: function (req, res, next) {
res.locals = {
title: "My Website's Title",
pageTitle: "The Root Splash Page",
author: "Cory Gross",
description: "My app's description",
};
next();
},
index: async function (req, res, next) {
res.locals = {
index: "index2",
loggedIn: req.user ? true : false,
linkObj: await url.getAllUrl()
};
next();
}
};
В моемapp.js Я включил файл и просто приказал своему приложению использовать globalLocals:
var middleware = require('./config/middleware');
app.use(middleware.globalLocals);
Впоследствии без каких-либо других изменений я интегрировал это в свой ejs template
, и оно заработало:
<h1><%= title %></h1>
Отлично!
После того, как это было сделано, я немного поиграл с частью index
своего промежуточного программного обеспечения, а также интегрировал ее через мой app.js
, но другим способом,потому что я просто хочу сделать эти «индексные» переменные доступными для моего индексного маршрутизатора для четкого разделения !!
app.use("/", middleware.index, indexRouter);
Так что теперь я смог получить доступ к значениям, определенным в промежуточном программном обеспечениии использовать их в ejs.НО я больше не мог получить доступ к любому из globalLocals
и не понимаю, ПОЧЕМУ?
Может кто-нибудь сказать мне, как я могу сохранить разделение, как описано выше, и получить доступ к обоим объектам в моем шаблоне ejs