ExpressJS:app.get()/app.set() 数据生命周期
ExpressJS: app.get()/app.set() data lifetime
在express.js中我们可以使用app.set/get跨请求获取变量,在jade视图中打印它们并在高级中间件中访问它们。
但是 - 我在 express 的文档中找不到这些变量的生命周期是多少。
例如,如果我使用:
app.set('my-var', 'here is my var');
并尝试将其拉入同一个中间件链:
console.log(app.get('my-var')); // would work
但是在一个新的请求中间件链上我得到 undefined
我能拿到许可吗?
只要不被覆盖,来源自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 在渲染之前合并。没有类似的方法 - 清除设置,清除本地人。设置什么都可以。
在express.js中我们可以使用app.set/get跨请求获取变量,在jade视图中打印它们并在高级中间件中访问它们。
但是 - 我在 express 的文档中找不到这些变量的生命周期是多少。
例如,如果我使用:
app.set('my-var', 'here is my var');
并尝试将其拉入同一个中间件链:
console.log(app.get('my-var')); // would work
但是在一个新的请求中间件链上我得到 undefined
我能拿到许可吗?
只要不被覆盖,来源自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 在渲染之前合并。没有类似的方法 - 清除设置,清除本地人。设置什么都可以。