路由功能的分析
路由功能是通过url字符串进行路由的。假如已实现了路由功能,会怎么去使用呢?通过这种反倒思考,我们先写一段代码,来看看路由功能实现后,如何使用它。通过这种方式,推导出应该如何实现路由的蓝图。
var App = require("stuwebfk").App
,app = new App();
app.get("/about",function(req,res){
......
});
app.post("/update",function(){
......
});以上的代码,可以看到实现路由功能后的使用方式。结合昨天我们实现的get/post的功能,会发现需要在昨天实现的功能代码上做文章。
需要更改App.js的源代码。
App.prototype.get = function(route,handle){
......
}
App.prototype.post = function(route,handle){
......
}可以看出,不但要实现GET/POST处理器的分离,还要实现route路由处理的分离。也就是说,需要两个对象,分别保存GET/POST的路由请求处理。我们定义这两个对象为 route_get_handles 和 route_post_handles,在分析和实现的过程中,需要循序渐进,不要把解决方式和分析达到完美,然后再去编码实现,这本身是个迭代过程。 所以,眼下的分析应该可以运作,我们就先去实现它,然后再逐步完善。
显然还要在App.js的构造器中做一些改动。
App.js的构造函数的相关部分代码:
function App(){
// request事件响应函数
function handle(req,res){
// 执行插件函数
function execMiddle(){
var middle = middleList[middleIndex];
if(middle){
middle(req,res,next);
}else{
// 需要做文章的地方
}
}
}
}下一节,我们将实现分析的结论。