91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用director.js實現前端路由

發布時間:2021-06-21 11:19:06 來源:億速云 閱讀:117 作者:小新 欄目:web開發

這篇文章主要介紹了如何使用director.js實現前端路由,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

director.js是什么?

理解:前端的route框架,director.js客戶端的路由注冊/解析器,在不刷新的情況下,利用“#”號組織不同的URL路徑,并根據不同的URL路徑進行不同的方法調用。意思就是有什么樣的路徑就有什么樣的方法。

場合:客戶端瀏覽器和node.js的服務器應用。非常適合用來開發不需要刷新的單頁面應用程序以及node.js應用。

兼容性:不依賴與任何庫。例如jquery等。但它又和jquery能很好的融合在一起;

客戶端的路由:

客戶端的路由 (也稱為哈希路由) 允許您指定一些關于使用URL應用狀態的信息,當用戶指定固定的URL,進行相應的頁面顯示。

簡單例子

1. 單獨使用

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>A Gentle Introduction</title>
  <script
   src="https://rawgit.com/flatiron/director/master/build/director.min.js">
  </script>
  <script>
   var author = function () { console.log("author"); };
   var books = function () { console.log("books"); };
   var viewBook = function (bookId) {
    console.log("viewBook: bookId is populated: " + bookId);
   };
   var routes = {
    '/author': author,
    '/books': [books, function() {
     console.log("An inline route handler.");
    }],
    '/books/view/:bookId': viewBook
   };
   var router = Router(routes);
   router.init();
  </script>
 </head>
 <body>
  <ul>
   <li><a href="#/author">#/author</a></li>
   <li><a href="#/books">#/books</a></li>
   <li><a href="#/books/view/1">#/books/view/1</a></li>
  </ul>
 </body>
</html>

2當與jquery相結合

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>A Gentle Introduction 2</title>
  <script
   src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js">
  </script>
  <script
   src="https://rawgit.com/flatiron/director/master/build/director.min.js">
  </script>
  <script>
  $('document').ready(function() {
   //
   // create some functions to be executed when
   // the correct route is issued by the user.
   //
   var showAuthorInfo = function () { console.log("showAuthorInfo"); };
   var listBooks = function () { console.log("listBooks"); };
   var allroutes = function() {
    var route = window.location.hash.slice(2);
    var sections = $('section');
    var section;
    section = sections.filter('[data-route=' + route + ']');
    if (section.length) {
     sections.hide(250);
     section.show(250);
    }
   };
   //
   // define the routing table.
   //
   var routes = {
    '/author': showAuthorInfo,
    '/books': listBooks
   };
   //
   // instantiate the router.
   //
   var router = Router(routes);
   //
   // a global configuration setting.
   //
   router.configure({
    on: allroutes
   });
   router.init();
  });
  </script>
 </head>
 <body>
  <section data-route="author">Author Name</section>
  <section data-route="books">Book1, Book2, Book3</section>
  <ul>
   <li><a href="#/author">#/author</a></li>
   <li><a href="#/books">#/books</a></li>
  </ul>
 </body>
</html>

Director支持commond的書寫方式

例子如下:

 var director = require('director');
 var router = new director.cli.Router();
 router.on('create', function () {
  console.log('create something');
 });
 router.on(/destroy/, function () {
  console.log('destroy something');
 });
 // You will need to dispatch the cli arguments yourself
 router.dispatch('on', process.argv.slice(2).join(' '));

初始化及路由器的注冊

 var router = Router(routes);

另外,構造方法中傳入的routes參數是一個路由對象,它是一個具有鍵值對結構的對象,可以被多層的嵌套。鍵對對應的URL中傳入的路徑,一般一個鍵值對應按照分割符切割后的某一部分;而鍵值對的值對應的該路徑的需要觸發的回調函數名。回調函數要在路由表對象使用前先聲明,否則js會報錯。

另外,回調函數除非特殊情況,一般不推薦使用匿名函數,請盡量先聲明后使用。

   var routes = {
  '/dog': bark,  
  '/cat': [meow, scratch]
 };

這里的的url是#dog和#cat

聲明Router對象后,需要調用init()方法進行初始化,如:

router.init();

路由的事件

路由事件是路由注冊表中一個有固定命名的屬性,是指當路由方法router.dispatch()被調用時,路由匹配成功的時定義的需要觸發的回調方法(允許定義多個回調方法)。上文即時注冊功能里的"on"方法就是一個事件。具體信息如下:  

on :當路由匹配成功后,需要執行的方法

before:在觸發“on”方法之前執行的方法

僅在客戶端有效的方法:

after:當離開當前注冊路徑時,需要執行的方法

once: 當前注冊路徑僅執行一次的方法

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用director.js實現前端路由”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁明县| 云和县| 如皋市| 黄梅县| 天镇县| 商水县| 阜南县| 清水河县| 河南省| 浦东新区| 玉屏| 宜春市| 出国| 普陀区| 大厂| 平阳县| 色达县| 灵丘县| 上饶市| 长宁县| 水富县| 泽库县| 大埔区| 苏尼特右旗| 闻喜县| 锦州市| 和顺县| 手游| 扶风县| 安龙县| 潮州市| 汕头市| 华安县| 博客| 巩义市| 顺义区| 巴塘县| 双辽市| 韩城市| 凌源市| 洞口县|