最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Express4。 app.locals,res.locals和req.app.locals之间有什么区别?

运维笔记admin11浏览0评论

Express4。 app.locals,res.locals和req.app.locals之间有什么区别?

Express4。 app.locals,res.locals和req.app.locals之间有什么区别?

使用快递4时我很困惑。我使用快速生成器来生成我的项目。路由器文件中的root和index.js中有app.js。但是,关于快递的互联网教程正在app.js中直接使用路由器。因此,当我想在index.js中设置一些变量(在路由器文件中)时,我使用app.locals,但它不起作用。但是当我改为另外两个时,我的ejs模板起作用......我很困惑。有人可以告诉我它们之间的区别以及如何正确使用吗?

<!-- 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>&nbsp;|&nbsp;</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>&nbsp;|&nbsp;</span>
        <li><a href="#" class="navbar-link" data-toggle="modal" data-target="#signupModal">注册</a>
        </li>
      <% } %>
回答如下:
  • app.locals对象是一个JavaScript对象,其属性是应用程序中的局部变量。 app.locals.title // => 'My App' app.locals.email // => '[email protected]' 设置后,app.locals属性的值在应用程序的整个生命周期中都会持续存在
  • res.locals属性相反,res属性仅在请求的生命周期内有效。当你处理你有app.locals对象的路线时,你不会有一个app对象,反之亦然req.app.locals
  • 您可以在应用程序中呈现的模板中访问局部变量。这对于为模板提供辅助函数以及应用程序级数据非常有用。当地人可以通过req.app获得中间件(参见app.locals.title = 'My App'; app.locals.strftime = require('strftime'); app.locals.email = '[email protected]'; Node.js In Action

来自app.local的一张图片如下,描述了res.local和的区别

express documentation

发布评论

评论列表(0)

  1. 暂无评论