全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

用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  # 前端路由  # 路由  # 默认路由  # director.js实现前端路由使用实例  # vue.js使用watch监听路由变化的方法  # VueJs路由跳转——vue-router的使用详解  # JS实现简单路由器功能的方法  # AngularJS路由实现页面跳转实例  # AngularJS 路由详解和简单实例  # react-router JS 控制路由跳转实例  # 使用AngularJS对路由进行安全性处理的方法  # AngularJS监听路由的变化示例代码  # JS实现前端路由功能示例【原生路由】  # 回调  # 客户端  # 键值  # 是一个  # 很好  # 多个  # 就有  # 不需要  # 是指  # 推荐使用  # 它是  # 要在  # 报错  # 注册表  # 前先  # 大家多多  # 它又  # 应用程序  # 不依赖  # 情况下 


相关文章: 电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何通过老薛主机一键快速建站?  如何确保西部建站助手FTP传输的安全性?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何在阿里云虚拟服务器快速搭建网站?  学校为何禁止电信移动建设网站?  如何在IIS管理器中快速创建并配置网站?  如何通过西部数码建站助手快速创建专业网站?  如何用好域名打造高点击率的自主建站?  c# await 一个已经完成的Task会发生什么  导航网站建站方案与优化指南:一站式高效搭建技巧解析  python的本地网站制作,如何创建本地站点?  文字头像制作网站推荐软件,醒图能自动配文字吗?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站之星后台密码遗忘如何找回?  简单实现Android验证码  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  韩国服务器如何优化跨境访问实现高效连接?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何将凡科建站内容保存为本地文件?  如何用美橙互联一键搭建多站合一网站?  如何在局域网内绑定自建网站域名?  如何通过万网虚拟主机快速搭建网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何在Ubuntu系统下快速搭建WordPress个人网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  个人网站制作流程图片大全,个人网站如何注销?  官网网站制作腾讯审核要多久,联想路由器newifi官网  建站主机选哪家性价比最高?  如何快速搭建个人网站并优化SEO?  招贴海报怎么做,什么是海报招贴?  怎么将XML数据可视化 D3.js加载XML  已有域名如何快速搭建专属网站?  无锡营销型网站制作公司,无锡网选车牌流程?  如何做静态网页,sublimetext3.0制作静态网页?  建站主机CVM配置优化、SEO策略与性能提升指南  css网站制作参考文献有哪些,易聊怎么注册?  网站制作壁纸教程视频,电脑壁纸网站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何通过可视化优化提升建站效果?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何用狗爹虚拟主机快速搭建网站?  网站制作话术技巧,网站推广做的好怎么话术?  广东企业建站网站优化与SEO营销核心策略指南  如何通过VPS建站实现广告与增值服务盈利?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何在Windows服务器上快速搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。