0

您好,我的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){
   ...
 }

这是不好的做法吗?

4

2 回答 2

1

正如在express api 参考中所说:

app.VERB(path, [callback...], callback)

这些app.VERB()方法在 Express 中提供路由功能,其中 VERB 是 HTTP 动词之一,例如app.post().

app.use([path], function)

使用给定的中间件函数,带有可选的挂载路径,默认为“/”。

“挂载”路径被剥离,中间件功能不可见。此功能的主要效果是挂载的中间件可以在不更改代码的情况下运行,而不管其“前缀”路径名如何。

国际海事组织

功能可能几乎相同,但有一个潜在的语义含义。路由本身应该通过app.VERBapi 设置,而任何中间件都应该通过app.useapi 设置。

通常中间件 会修改requestorresponse对象,或者从其他模块注入功能,这些功能可能会回答request, 或不回答。

connect.static是一个很好的例子。它本身可以是一个app或一个HttpServer,但作为中间件注入到其他应用程序对象上。

于 2013-06-21T10:18:17.547 回答
-1

我个人不喜欢require其他命令var bla = require('bla');,在我看来,它使代码的可读性更差,而且你没有得到任何回报。

我不确定你的意图是什么,但如果你的代码依赖于环境变量,最好立即抛出而不是稍后调用你的路由。app.use那就更好app.all了。但我不明白你为什么不简单地在 app.js 中测试你的条件以及为什么将它隐藏在somemodule.

于 2013-06-21T11:25:16.630 回答