Expressjs中间件示例

时间:2013-06-21 07:32:41

标签: node.js express

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){
   ...
 }

糟糕的做法吗?

2 个答案:

答案 0 :(得分:1)

正如the express api reference所说:

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

  

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

app.use([path], function)

  

使用给定的中间件功能,带有可选的安装路径,   默认为“/".

     

“mount”路径被剥离,中间件不可见   功能。这个功能的主要作用是安装中间件   无论代码的“前缀”路径名如何,都可以在没有代码更改的情况下运行。

IMO

功能可能几乎相同,但存在潜在的语义含义。路由本身应该通过app.VERB api设置,而任何中间件都应该通过app.use api设置。

通常中间件 修改requestresponse对象,或从其他模块中注入功能 request,或不。{/ p>

connect.static就是一个很好的例子。它本身可能真的是appHttpServer,但在其他app对象上作为中间件注入。

答案 1 :(得分:-1)

我个人不喜欢其他命令中的require var bla = require('bla');,它会让我认为代码更糟糕,并且你没有得到任何回报。

我不确定你的意图是什么,但是如果你的代码依赖于环境变量,那么最好在你的路线被调用时立即投掷。因此app.useapp.all更好。但是我不明白你为什么不在app.js中测试自己的状况以及为什么要在somemodule中隐藏它。