js导入html自制路由器电源线,js实现自定义路由

本文实现自定义路由,主要是事件hashchange的使用,然后根据我们的业务需求封装。

首先实现一个router的类,并实例化。

function _router(config){

this.config = config ? config : {};

}

_router.prototype = {

event:function(str,callback){

var events = str.split(' ');

for (var i in events) window.addEventListener(events[i],callback,false);

},

init: function() {

this.event('load hashchange',this.refresh.bind(this));

return this;

},

refresh: function() {

this.currentUrl = location.hash.slice(1) || '/';

this.config[this.currentUrl]();

},

route: function(path,callback){

this.config[path] = callback || function(){};

}

}

function router (config){

return new _router(config).init();

}

上边唯一需要注意的是,在使用addEventListener的时候,需要注意bind函数的使用,因为我是踩了坑,这才体会到$.proxy()。

上边使用的时候可以使用两种方法进行注册,但第二种是依赖第一种的。

方法一:

var Router = router({

'/' : function(){content.style.backgroundColor = 'white';},

'/1': function(){content.style.backgroundColor = 'blue';},

'/2': function(){content.style.backgroundColor = 'green';}

})

方法二:

Router.route('/3',function(){ content.style.backgroundColor = 'yellow'; })

完整代码:

var content = document.querySelector('body');

function _router(config){

this.config = config ? config : {};

}

_router.prototype = {

event:function(str,callback){

var events = str.split(' ');

for (var i in events) window.addEventListener(events[i],callback,false);

},

init: function() {

this.event('load hashchange',this.refresh.bind(this));

return this;

},

refresh: function() {

this.currentUrl = location.hash.slice(1) || '/';

this.config[this.currentUrl]();

},

route: function(path,callback){

this.config[path] = callback || function(){};

}

}

function router (config){

return new _router(config).init();

}

var Router = router({

'/' : function(){content.style.backgroundColor = 'white';},

'/1': function(){content.style.backgroundColor = 'blue';},

'/2': function(){content.style.backgroundColor = 'green';}

})

Router.route('/3',function(){

content.style.backgroundColor = 'yellow';

})

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值