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插件Tabs实现过程
Jul 06 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
总结几道关于Node.js的面试问题
Jan 11 Javascript
node跨域请求方法小结
Aug 25 Javascript
vue 实现剪裁图片并上传服务器功能
Mar 01 Javascript
jquery实现抽奖功能
Oct 22 jQuery
使用jQuery实现购物车
Oct 29 jQuery
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中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
js实现车辆管理系统
2020/08/26 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Pycharm小白级简单使用教程
2020/01/08 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python中return函数返回值实例用法
2020/11/19 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
面试后感谢信怎么写
2014/02/01 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android