综合1和2,可以使用global全局对象存储本地全局变量,使用response存储响应全局变量。

/app5/app.js修改为:

  1. /**
  2. * Module dependencies.
  3. */
  4. // 本地全局变量
  5. // 将设置为不可删除、只读
  6. Object.defineProperty(global,"test",{
  7. value:"ydr.me",
  8. writable:false,
  9. configurable:false,
  10. });
  11. var express = require('express');
  12. var routes = require('./routes');
  13. var user = require('./routes/user');
  14. var http = require('http');
  15. var path = require('path');
  16. var app = express();
  17. app.use(function(request, response, next){
  18. // 响应全局变量
  19. response.locals.time=Date.now();
  20. next();
  21. });
  22. // ... 以下省略

/app5/routes/index.js修改为:

  1. /*
  2. * GET home page.
  3. */
  4. console.log(global.test);
  5. // =>ydr.me
  6. module.exports = {
  7. index: function(req, res) {
  8. console.log(global.test);
  9. // =>ydr.me
  10. console.log(res.locals.time);
  11. res.render('index', {
  12. title: 'Express'
  13. });
  14. },
  15. };

将全局变量定义为不可写、不可配置(不可删除),防止在其他地方复写全局变量。