Hash路由的简单算法

我们看一下这个题目要求

<a href="#/">首页</a>
<a href="#/list">列表</a>
<a href="#/my">我的</a>
<div class="view"></div>
<script>
// 补全以下代码  使view盒子中的内容与你的路由同时变化
   class HashRouter {
           // 你的代码
   }

   new HashRouter({
       routes: [
           {
               path: '/',
               component: '首页'
           },
           {
               path: '/list',
               component: '列表'
           },
           {
               path: '/my',
               component: '我的'
           }
       ]
   })
</script>

很明显  这就是一个简单的哈希路由跳转内容跟随改变

那么我们可以这样写

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <a href="#/">首页</a>
    <a href="#/list">列表</a>
    <a href="#/my">我的</a>
    <div class="view"></div>
    <script>
        let div = document.querySelector('.view')
        class HashRouter {
            constructor({ routes }) {
                // 初始化路由
                this.routes = routes
                // 渲染页面
                this.render()
                // 监听hashchange事件
                window.addEventListener('hashchange', () => {
                    // 更新页面
                    this.render()
                })
            }
            // 更新页面
            render() {
                // 获取hash值
                // 切割hash值,获取路径
                let path = location.hash.slice(1) || '/'
                // 根据路径查找组件
                let component = this.routes.find(item => item.path === path)
                // 如果找到了组件,则渲染组件
                div.innerHTML = component.component
            }
        }

        new HashRouter({
            routes: [
                {
                    path: '/',
                    component: '首页'
                },
                {
                    path: '/list',
                    component: '列表'
                },
                {
                    path: '/my',
                    component: '我的'
                }
            ]
        })
    </script>
</body>

</html>

这样  一个简单的哈希路由算法就写完了  你学会了吗

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值