2

在 express 3.0 中,我尝试将 express 仅用于路由目的,而不是将其与 app.server() 结合使用。这个想法是使用路由引擎,但作为另一个框架的一部分,我想在其中将 URL 空间分配给不同的子模块。理想情况下,我应该支持现有的路由引擎,这样人们就可以轻松地重新利用他们现有的代码库。

由于 express 似乎与关于 req 和 res 的假设相当多,我试图找出 express 依赖的两个子集,所以我没有错误。然后重新定义 res.render() 等以适应我的口味。

对于此代码: var app=require('express')(); // 注册路由... app.get('/test', function(req, res){ console.log("In test1."); });

// From: http://nodejs.org/api/http.html#http_class_http_serverrequest
var req1={ headers: {}, method: 'GET', url: "/test" };
var req2={ headers: {}, method: 'GET', url: "/no_match" };
var res={
  setHeader: function(a, b) {console.log(a, b);}
};
console.log("About to test routing now.");
app(req1, res); // ok, should call associated method.
app(req2, res); // Errors!

第一个 app() 返回正常。但是第二个给出了一系列错误。Express 必须依赖于 req,这是必需的。但我无法理解为什么它应该依赖于响应对象,因为响应仅由应用程序方法使用。我应该创建 res 对象的哪个子集,这样我可以确信它适用于用户可能用于其应用程序的任何随机代码?

4

0 回答 0