Expresso 4. Qual é a diferença entre a aplicação.locais, res, locais e req.aplicacao.locais?
Estou tão confuso ao usar o expresso 4. Eu uso express-generator para gerar o meu projecto. E há app.Js No root e no Ãndice .js no ficheiro do router. No entanto,o tutorial na internet sobre o express está a usar o router directamente na aplicação .js . Então, quando eu quiser definir algumas variáveis no Ãndice .js (no ficheiro de router), eu uso a aplicação.locais, mas não funciona. Mas quando mudo para os outros dois, o meu modelo ejs funciona... Estou muito confuso. Qualquer um pode me dizer a diferença entre eles e como usar corretamente, por favor?
<!-- language: index.js in router file -->
var app = require('express');
var router = express.Router();
....
router.get('/', function(req, res, next) {
var _user = req.session.user;
if (_user) {
//does't work!!
//app.locals.user=_user;
//I am not sure about which usage is correct below
//1.
req.app.locals.user = _user;
//2.
// res.locals.user=_user;
}
}
<!-- language: lang-ejs -->
<% if (user) { %>
<li><a class="navbar-link">Welcome <%= user.name %></a>
</li>
<span> | </span>
<li><a href="/logout" class="navbar-link" id="logoutBtn">Logout</a>
</li>
<% } else { %>
<li><a href="#" class="navbar-link" data-toggle="modal" data-target="#signinModal">登录</a>
</li>
<span> | </span>
<li><a href="#" class="navbar-link" data-toggle="modal" data-target="#signupModal">注册</a>
</li>
<% } %>
2 answers
-
A
app.locals
objeto é um objeto JavaScript, e suas propriedades são variáveis locais dentro da aplicação.app.locals.title // => 'My App' app.locals.email // => '[email protected]'
Uma vez definido, o valor de
app.locals
Propriedades persistem ao longo da vida da aplicação Em contraste com
res.locals
propriedades que são válidas apenas para o tempo de vida do pedido. Quando você lidar com a rota onde você tem um objetores
, Você não terá um objeto app lá e vice-versa paraapp.locals
.-
Você pode acessar variáveis locais em modelos renderizados dentro da aplicação. Isto é útil para fornecer funções auxiliares para modelos, bem como dados app-level. Os locais estão disponÃveis no middleware via
req.app.locals
(ver req.aplicação)app.locals.title = 'My App'; app.locals.strftime = require('strftime'); app.locals.email = '[email protected]';
Uma imagem de Node.js In Action
livro como abaixo, descrever a diferença de app.local
e res.local
App.locais
O objeto app.locals
é um objeto JavaScript, e suas propriedades são variáveis locais dentro da aplicação.
Isto significa que você pode declarar uma variável no seu app.js
com locals
e acessá-la dentro desse script ou passá-la para o response object
.
Res. locais
Com isto, poderá definir ou enviar variáveis para o lado do cliente html / view e é apenas disponÃvel nessa janela / html.
Por exemplo
app.get('/view', function(req, res) {
res.locals.user = req.user;
});
Aqui a variável user
está disponÃvel na sua página html a pedir a rota view
.
Req.aplicacao.locais
Os locais estão disponÃveis no middleware viareq.app.locals
;