Skip to content

ericdum/SimpleRouter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

SimpleRouter

一个简单的router,根据#!action/param1/param2....:key1=value:key2=value....这样的链接交给controller处理来无刷跳转页面。

##鸣谢 感谢jQuery hashchange项目让某些浏览器支持了onhashchange事件

##为什么做这个

现在经常遇到做一个小站同时页面跳转要是通过js控制的,并且还要支持通过url直接访问二级页面如:domain.com/#!about-me要直接访问到about-me页面。

以前每个项目都单独写个简单的路由,这次又遇到这个问题,干脆就写一个简单、好扩展的,以后直接引入就行了。

##依赖

  1. jquery
  2. hashchange(直接包入了本项目js) - 浏览器兼容方案

##使用方法

  1. 引入simple-router.js
  2. 编写controller及其他特殊路由规则router.rules
  3. 使用<a href="#!action/...">action</a>
  4. 空hash调用controller.index

##window.router ###router.rules 是一系列action和处理函数为键值对的对象。处理函数可以为函数也可以是字符串,如果是字符串,router将到controller里面去查找同名的函数。

router.rules = {
	page1 : function(){ 
		//url#!page1 
	},
	page2 : 'back'
}
controller.back = function(){
	//url#!page2
}

###router.action 当前action的处理函数

##window.controller ###action的定义 controller.news = function(category, page){ // 若这样访问: #!news/sport/2:limit=10:fav=0 console.log(category); //"sport" console.log(page); //"2" console.log(request.querys); //Object {limit: "10", fav: "0"} } ###controller.index 根action ###controller.noFound 未找到任何匹配的action时调用 ###controller.beforeFilter 调用任何action之前调用 ###controller.afterFilter 调用任何action之后调用

##window.request ###request.hash 完整的hash字符串(删除了#!) ###request.action 当前的action名称,如果不存在,则为index ###request.params 当前请求的参数列表(被依次传入action) ###request.querys 类似于http get请求的get数组

About

一个简单的router,根据#!action/param1/param2....:key1=value:key2=value....这样的链接交给controller处理来无刷跳转页面。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors