hash模式下路由的实现

想了解一下路由的原理,首先了解到的是hash模式下路由的实现:
html结构

    <!-- 这个是html结构 -->
    <ul>
        <li><a href="#/">首页</a></li>
        <li><a href="#/second">第二页</a></li>
        <li><a href="#/third">第三页</a></li>
    </ul>
    <div class="show-box"></div>

js部分


  //首先需要写一个路由对象,就像vue里面的vue-router,在这个对象里会有三个方法帮助我们完成路由的工作
    class Router {
        constructor () {
            this.routers = {};
            this.prensentRouter = '';  
        }
        //第一个方法是,创造路由和内容
        route (path,callBack) {
            this.routers[path] = callBack || function () {};
        }
        //第二个方法是实现在hash改变的时候执行路由对应的行为
        reRouter () {
            this.prensentRouter = location.hash.slice(1) || '/';
            this.routers[this.prensentRouter]();
        }
        //第三个方法就是实现hashChange时候reRouter执行的事件监听
        init () {
            window.addEventListener ('load',this.reRouter.bind(this),false); 
            window.addEventListener ('hashchange',this.reRouter.bind(this),false); 
        }
    }
    //开始调用
    let router = new Router();
    let showBox = document.querySelector('.show-box');
    router.init();
    //创建路由
    router.route('/', ()=>{
        showBox.innerHTML = "<h1>首页</h1>"
        showBox.style.backgroundColor = 'green'
    })
    router.route('/second',()=>{
        showBox.innerHTML = "<h1>第二页</h1>"
        showBox.style.backgroundColor = 'yellow'
    })
    router.route('/third',()=>{
        showBox.innerHTML = "<h1>第三页</h1>"
        showBox.style.backgroundColor = 'blue'
    })
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值