用director.js实现前端路由使用实例

发布时间 - 2026-01-10 22:48:31    点击率:

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实现前端路由功能示例【原生路由】  # 回调  # 客户端  # 键值  # 是一个  # 很好  # 多个  # 就有  # 不需要  # 是指  # 推荐使用  # 它是  # 要在  # 报错  # 注册表  # 前先  # 大家多多  # 它又  # 应用程序  # 不依赖  # 情况下 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站生成指南:免费资源整合与高速稳定配置方案  5种Android数据存储方式汇总  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  SQL查询语句优化的实用方法总结  零服务器AI建站解决方案:快速部署与云端平台低成本实践  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  制作公司内部网站有哪些,内网如何建网站?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速搭建虚拟主机网站?新手必看指南  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何在IIS中新建站点并配置端口与物理路径?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel如何实现一对一模型关联?(Eloquent示例)  如何自定义建站之星模板颜色并下载新样式?  如何打造高效商业网站?建站目的决定转化率  香港服务器租用每月最低只需15元?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何使用Sanctum进行API认证?(SPA实战)  大型企业网站制作流程,做网站需要注册公司吗?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Python并发异常传播_错误处理解析【教程】  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何快速辨别茅台真假?关键步骤解析  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  七夕网站制作视频,七夕大促活动怎么报名?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  做企业网站制作流程,企业网站制作基本流程有哪些?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  用v-html解决Vue.js渲染中html标签不被解析的问题  如何快速搭建高效可靠的建站解决方案?  详解阿里云nginx服务器多站点的配置  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  JS弹性运动实现方法分析  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何用wdcp快速搭建高效网站?