JS实现简单路由器功能的方法


Posted in Javascript onMay 27, 2015

本文实例讲述了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();

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
jquery 实现两级导航菜单附效果图
Mar 07 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
jQuery实现的网页竖向菜单效果代码
Aug 26 Javascript
jQuery横向擦除焦点图特效代码分享
Sep 06 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
Angular中实现树形结构视图实例代码
May 05 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
用vue设计一个日历表
Dec 03 Vue.js
JavaScript实现将UPC转换成ISBN的方法
May 26 #Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
May 26 #Javascript
js实现文本框选中的方法
May 26 #Javascript
javascript委托(Delegate)blur和focus用法实例分析
May 26 #Javascript
javascript删除元素节点removeChild()用法实例
May 26 #Javascript
JavaScript事件委托实例分析
May 26 #Javascript
JQuery选择器、过滤器大整理
May 26 #Javascript
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
使用PHP批量生成随机用户名
2008/07/10 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
为你总结一些php系统类函数
2015/10/21 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
Python 函数返回值的示例代码
2019/03/11 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Python zip函数打包元素实例解析
2019/12/11 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
趣味运动会策划方案
2014/06/02 职场文书
社团活动总结报告
2014/06/27 职场文书
医学检验专业自荐信
2014/09/18 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
教师节班会开场白
2015/06/01 职场文书
小学英语教学随笔
2015/08/14 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
Python 如何实现文件自动去重
2021/06/02 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript