ExpressJS:app.get()/ app.set()数据生命周期

时间:2015-03-30 10:59:16

标签: node.js express

在express.js中,我们可以使用app.set / get来获取请求中的变量,在jade视图中打印它们并在高级阶段中间件中访问它们。

但是 - 我在express的文档中找不到这些变量的生命周期。

例如,如果我使用:

app.set('my-var', 'here is my var');

试图将其拉入同一个中间件链:

console.log(app.get('my-var')); // would work

但是在新的请求中间件链上,我得到了undefined

我可以获得许可吗?

1 个答案:

答案 0 :(得分:1)

只要没有人不会覆盖它,请来自express/lib/application.js

app.init() - bootsrapp ExpressJS

this.settings = {};

默认配置 - 为本地人设置设置

this.locals.settings = this.settings;

app.set() - 方法定义

app.set = function(setting, val){   
  // set value
  this.settings[setting] = val;

app.render() - 是时候渲染视图

app.render = function(name, options, fn){
  var opts = {};
  var view;

  // merge app.locals
  merge(opts, this.locals);

  // merge options._locals
  if (options._locals) {
    merge(opts, options._locals);
  }

  // merge options
  merge(opts, options);

  // render
  try {
    view.render(opts, fn);
  } catch (err) {
    fn(err);
  }
}

ExpressJS 中没有魔法 - 设置和local.settings在渲染之前合并。没有类似的方法 - 清晰的设置,清晰的本地人。无论设置如何,它都是可用的。

相关问题