路由功能的分析

路由功能是通过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_handlesroute_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{
                     // 需要做文章的地方    
                }
            }     
     }
 }

下一节,我们将实现分析的结论。