博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript实现前端路由
阅读量:6002 次
发布时间:2019-06-20

本文共 1552 字,大约阅读时间需要 5 分钟。

  hot3.png

在单页面应用中,前端通常需要一套路由机制,这样当url发生变化时就可以做出一些处理,从而让页面显示不同的内容。Backbone及Angular里面内置的都有一套路由实现,但有时候可能并不想使用整个框架,只需要路由处理的部分,那么下面就来看一下如何用JavaScript实现前端路由。

html部分:

这里有几个带#号的,点击不同的锚链接url里会产生不同的hash,如#/page1、#/page2等,这个值可以通过location.hash获取。

同时,每次hash的变化我们还可以通过事件来监听,然后做出相应的处理,下面就来看一下具体的实现:

Router处理的核心代码:

;(function () {
function Router () {} Router.prototype.route = function ( path, callback ) {
var url = location.hash.slice(1) || '/'; // 刷新时的处理 window.addEventListener('load', function () {
if ( url == path ) {
callback&&callback(); } }, false); // hash变化时的处理 window.addEventListener('hashchange', function () {
url = location.hash.slice(1) || '/'; if ( url == path ) {
callback&&callback(); } }, false); }; window.Router = new Router(); })();

Router注册,注册方式就是Router.route(path, callback)的格式:

var content = document.querySelectorAll('.content'); // 测试函数,这里可以放一些ajax处理之类的 function loadContent ( text ) {
content[0].innerHTML = text; } // 注意:这里的path要和html里面锚链接对应 // 如:‘#/’对应‘/’, '#/page2'对应'/page2' Router.route('/', function () {
loadContent('这是首页'); }); Router.route('/page1', function () {
loadContent('这是页面1'); }); Router.route('/page2', function () {
loadContent('这是页面2'); }); Router.route('/page3', function () {
loadContent('这是页面3'); }); Router.route('/page4', function () {
loadContent('这是页面4'); });

Ok,以上就是前端路由的简单实现,另外也可以使用来处理。

转载于:https://my.oschina.net/liting/blog/499428

你可能感兴趣的文章
Linux网卡名改eth0方法
查看>>
SQL or NoSQL——云计算环境中该选择谁
查看>>
托盘气泡很长时间才能消失,uTimeout没起到作用的解决办法
查看>>
利用webshell搭建socks代理
查看>>
nginx+keepalived构建主主负载均衡代理服务器
查看>>
LED灯的闪烁与熄灭也成了一个iptables target,强汗
查看>>
UVA 1169\uvalive 3983 Robotruck 单调队列优化DP
查看>>
我的友情链接
查看>>
POJ 1703 Find them, Catch them
查看>>
[共通]手机端网页开发问题及解决方法整理
查看>>
HSRP 原理
查看>>
监控队列的脚本
查看>>
我不是九爷 带你了解 CloudStack+XenServer详细部署方案(3):CloudStack管理节点的安装和配置...
查看>>
我的友情链接
查看>>
发布一个php分页类
查看>>
我的友情链接
查看>>
${basePath}
查看>>
linux命令之uniq简单用法
查看>>
使用Eclipse调试Java程序的10个技巧
查看>>
Hive分桶表
查看>>