用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快速搭建高效网站?

