欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)自定義路由

 更新時間:2017年02月04日 11:15:02   作者:firegood  
本文介紹了js實(shí)現(xiàn)自定義路由,主要是事件hashchange的使用,然后根據(jù)我們的業(yè)務(wù)需求封裝。具有很好的參考價值,下面跟著小編一起來看下吧

本文實(shí)現(xiàn)自定義路由,主要是事件hashchange的使用,然后根據(jù)我們的業(yè)務(wù)需求封裝。

首先實(shí)現(xiàn)一個router的類,并實(shí)例化。

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函數(shù)的使用,因?yàn)槲沂遣攘丝樱@才體會到$.proxy()。

上邊使用的時候可以使用兩種方法進(jìn)行注冊,但第二種是依賴第一種的。

方法一:

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'; })

完整代碼:

<html>
 <head>
  <title></title>
 </head>
 <body>
  <ul>
   <li><a href="#/1">/1: blue</a></li>
   <li><a href="#/2">/2: green</a></li>
   <li><a href="#/3">/3: yellow</a></li>
  </ul>
  <script>
  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';
  })
  </script>
 </body>
</html>
<script> 
</script>

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • 純js封裝的ajax功能函數(shù)與用法示例

    純js封裝的ajax功能函數(shù)與用法示例

    這篇文章主要介紹了純js封裝的ajax功能函數(shù)與用法,結(jié)合實(shí)例形式分析了基于JavaScript封裝的ajax功能函數(shù)定義及與php后臺交互相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • ES6新特性四:變量的解構(gòu)賦值實(shí)例

    ES6新特性四:變量的解構(gòu)賦值實(shí)例

    這篇文章主要介紹了ES6新特性之變量的解構(gòu)賦值操作,結(jié)合實(shí)例形式分析了ES6針對數(shù)組、對象等的解構(gòu)賦值操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • JS設(shè)計模式之中介者模式使用方法詳解

    JS設(shè)計模式之中介者模式使用方法詳解

    JavaScript中介者模式是一種行為型設(shè)計模式,用于降低多個對象之間的耦合性,在中介者模式中,多個對象之間不直接相互通信,而是通過中介者進(jìn)行通信, 本文就來給大家詳細(xì)的介紹一下JS設(shè)計模式之中介者模式使用方法,需要的朋友可以參考下
    2023-08-08
  • JS實(shí)現(xiàn)滑動導(dǎo)航效果

    JS實(shí)現(xiàn)滑動導(dǎo)航效果

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)滑動導(dǎo)航效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • Iframe自適應(yīng)高度絕對好使的代碼 兼容IE,遨游,火狐

    Iframe自適應(yīng)高度絕對好使的代碼 兼容IE,遨游,火狐

    Iframe自適應(yīng)高度絕對好使的代碼IE,遨游,火狐都兼容,需要的朋友可以參考下。
    2011-01-01
  • js 靜態(tài)動態(tài)成員 and 信息的封裝和隱藏

    js 靜態(tài)動態(tài)成員 and 信息的封裝和隱藏

    一下用面向?qū)ο蟮南嚓P(guān)概念來解釋js中的仿面向?qū)ο?,因?yàn)閖s中不像其他語言,不存在面向?qū)ο笳Z言的相關(guān)特性
    2011-05-05
  • js繼承的6種方式詳解

    js繼承的6種方式詳解

    這篇文章主要給大家介紹了關(guān)于js繼承的6種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • javascript中動態(tài)加載js文件多種解決辦法總結(jié)

    javascript中動態(tài)加載js文件多種解決辦法總結(jié)

    這篇文章主要介紹了javascript中動態(tài)加載js文件多種解決辦法,有需要的朋友可以參考一下
    2013-11-11
  • JavaScript獲取radio選中值的幾種常用方法小結(jié)

    JavaScript獲取radio選中值的幾種常用方法小結(jié)

    這篇文章主要介紹了JavaScript獲取radio選中值的幾種常用方法,結(jié)合實(shí)例形式總結(jié)分析了javascript獲取radio選中值的常見實(shí)現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2023-06-06
  • 解析JavaScript中delete操作符不能刪除的對象

    解析JavaScript中delete操作符不能刪除的對象

    這篇文章主要是對JavaScript中delete操作符不能刪除的對象進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12

最新評論