Hellow我的 app.js 中有代码,看起来像这样:
app.use('/someurl', require('./middleware/somemodule'));
-app.use而不是app.all
和模块看起来像:
if(process.env.BLALAL === undefined){
throw "Error: process.env.BLALAL === undefined";
}
module.exports = function(req, res, next){
...
}
是糟糕的做法吗?
答案 0 :(得分:1)
app.VERB(path, [callback...], callback)
app.VERB()
方法在Express中提供路由功能, 其中VERB是HTTP动词之一,例如app.post()
。
使用给定的中间件功能,带有可选的安装路径, 默认为“/".
“mount”路径被剥离,中间件不可见 功能。这个功能的主要作用是安装中间件 无论代码的“前缀”路径名如何,都可以在没有代码更改的情况下运行。
功能可能几乎相同,但存在潜在的语义含义。路由本身应该通过app.VERB
api设置,而任何中间件都应该通过app.use
api设置。
通常中间件 修改request
或response
对象,或从其他模块中注入功能 request
,或不。{/ p>
connect.static
就是一个很好的例子。它本身可能真的是app
或HttpServer
,但在其他app对象上作为中间件注入。
答案 1 :(得分:-1)
我个人不喜欢其他命令中的require
var bla = require('bla');
,它会让我认为代码更糟糕,并且你没有得到任何回报。
我不确定你的意图是什么,但是如果你的代码依赖于环境变量,那么最好在你的路线被调用时立即投掷。因此app.use
比app.all
更好。但是我不明白你为什么不在app.js中测试自己的状况以及为什么要在somemodule
中隐藏它。