返回顶部

收藏

JS实现的一个简单的路由器功能代码

更多
var wawa = {};
wawa.Router = function(){
    function Router(){
    }

    Router.prototype.setup = function(routemap, defaultFunc){
        var that = this, rule, func;
        this.routemap = [];
        this.defaultFunc = defaultFunc;
        for (var rule in routemap) {
            if (!routemap.hasOwnProperty(rule)) continue;
            that.routemap.push({
                rule: new RegExp(rule, 'i'),
                func: routemap[rule]
            });             
        }
    };

    Router.prototype.start = function(){
        console.log(window.location.hash);

        var hash = location.hash, route, matchResult;
        for (var routeIndex in this.routemap){
            route = this.routemap[routeIndex];
            matchResult = hash.match(route.rule);
            if (matchResult){
                route.func.apply(window, matchResult.slice(1));
                return; 
            }
        }
        this.defaultFunc();
    };

    return Router;
}();

var router = new wawa.Router();
router.setup({
    '#/list/(.*)/(.*)': function(cate, id){
            console.log('list', cate, id);
        },
    '#/show/(.*)': function(id){
            console.log('show', id); 
        }
}, function(){
    console.log('default router');
});
router.start();

标签:路由器,route,javascript

收藏

0人收藏

支持

0

反对

0

发表评论