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 相关文章推荐
Three.js源码阅读笔记(光照部分)
Dec 27 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
值得分享的Bootstrap Table使用教程
Nov 23 Javascript
关于webpack代码拆分的解析
Jul 20 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
May 07 Javascript
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
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
Extjs学习笔记之七 布局
2010/01/08 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python 提取文件的小程序
2009/07/29 Python
Python中IPYTHON入门实例
2015/05/11 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
基于Python List的赋值方法
2018/06/23 Python
解决Python一行输出不显示的问题
2018/12/03 Python
python几种常用功能实现代码实例
2019/12/25 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
找工作最新求职信
2013/12/22 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
新年团拜会主持词
2014/04/02 职场文书
《雪儿》教学反思
2014/04/17 职场文书
欢迎家长标语
2014/10/08 职场文书
师范生见习报告范文
2014/11/03 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书