试图找到一个解决方案,我找到了 4 个解决方案,但我想知道哪个更好/最佳实践。为什么! :P
<强>1。使用 req.app.get()
// app.js
app.set('settings', { domain: 'http://www.example.org' });
// other file
console.log(req.app.get('settings'));
<强>2。使用 req.app.settings(与上面类似)
// app.js
app.set('settings', { domain: 'http://www.example.org' });
// other file
console.log(req.app.settings.settings);
<强>3。导出应用对象,这样我就可以在没有请求对象的情况下访问 app.get()
// app.js
app.set('settings', { domain: 'http://www.example.org' });
module.exports = app;
// other file
var app = require('../app');
console.log(app.get('settings'));
<强>4。使用全局变量。可能是个坏主意,但是......“设置”不是一个全局性的事情吗? (我可以避免重复使用它,所以我不会遇到范围问题)
// app.js
settings = { domain: 'http://www.example.org' };
// other file
console.log(settings);
最佳答案
简要意见:
<强>1。使用 req.app.get()
在这里,我们为全局属性定义访问器方法(getter/setter)。所以它在语法上是正确的并且很容易理解。
<强>2。使用 req.app.settings(与上面类似)
在这里,我们定义了 setter,但没有使用 getter 来访问值。国际海事组织,不是一个好方法。而且,它也很难理解。
console.log(req.app.settings.settings);
<强>3。导出应用对象,这样我就可以在没有请求对象的情况下访问 app.get()
为什么,您需要导入一个文件,如果您可以访问它的话。如果您高度依赖 app
模块(例如,您需要大量的全局设置),这可能很有用,这通常是构建应用程序时的情况。
<强>4。使用全局变量。可能是个坏主意,但是......“设置”不是一个全局性的事情吗? (我可以避免重复使用它,所以我不会遇到范围问题) 这不是一个好方法,因为在这种情况下代码不可维护。
IMO,优先级类似于:1 > 3 > 2 > 4。
关于javascript - 在 express/node 中使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586542/