Witam Mam kilka pytań początkujących dotyczących korzystania z res (Express response object) i res.locals w Express.Różnica między przypisaniem do res i res.locals w node.js (Express)
Podczas nauki nodejs w jednym z przykładów kodu Istnieje middleware (messages.js), serwer (app.js) i szablon (messages.ejs). Patrząc na przykładowy kod szablonu. Wygląda na to, że chociaż wiadomości i removeMessages() są przypisane do res.locals. Możesz uzyskać do nich dostęp za pomocą wiadomości lub removeMessages() bez prefiksowania połączenia z miejscowymi. Chciałbym wiedzieć:
- Czy wskazują te same przedmioty?
- Jeśli są takie same, czy ma znaczenie, czy przypiszę polecenie res direct zamiast res.locals?
Kod próbki
messages.js
var express = require('express');
var res = express.response;
res.message = function (msg, type) {
type = type || 'info'
var sess = this.req.session;
sess.messages = sess.messages || [];
sess.messages.push({
type: type,
string: msg
});
};
res.error = function (msg) {
return this.message(msg, 'error');
};
module.exports = function (req, res, next) {
res.locals.messages = req.session.messages || [];
res.locals.removeMessages = function() {
req.session.messages = [];
};
next();
};
app.js (częściowe kodu)
var express = require('express');
var messages = require('./lib/messages');
var app = express();
app.use(messages);
messages.ejs
<% if(locals.messages) { %>
<% messages.forEach(function (message) { % %>
<p class = '<%= message.type %>' > <%= message.string %> < /p>
<% }) %>
<% removeMessages(); %>
<% } %>
Więc to znaczy, że jeśli miałbym zrobić kod wymienione poniżej. res.locals.messages jest ujawniony w ejs, podczas gdy \t res.nonLocalmessages nie jest i nie może być dostępny. \t 'module.exports = function (req, res, next) { res.locals.messages = req.session.messages || []; res.nonLocalmessages = req.session.messages || []; next(); }; ' – oREDi
@ user3247380 Masz rację. Możesz odwoływać się do niego w ejs jako 'messages' – SomeKittens