Vue入门(五)—— 前端路由

路由的概念

路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。

那么url地址和真实的资源之间就有一种对应的关系,就是路由。

路由分为前端路由和后端路由

  1. 后端路由是由服务器端进行实现,并完成资源的分发
  2. 前端路由是依靠hash值(锚链接)的变化进行实现

后端路由性能相对前端路由来说较低,所以,接下来主要讲解的是前端路由。

前端路由的基本概念

  • 根据不同的事件来显示不同的页面内容,即事件与事件处理函数之间的对应关系
  • 前端路由主要做的事情就是监听事件并分发执行事件处理函数

前端路由的初体验

前端路由是基于hash值的变化进行实现的(比如点击页面中的菜单或者按钮改变URL的hash值,根据hash值的变化来控制组件的切换)。

核心实现依靠一个事件,即监听hash值变化的事件

 window.addEventListener('hashchange', () => {
   
            //location.hash可以获取到最新的hash值
            console.log(location.hash);
        });

前端路由实现tab栏切换:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>前端路由实现tab栏切换</title>
</head>

<body>
    <!-- 被 vue 实例控制的 div 区域 -->
    <div id="app">
        <!-- 切换组件的超链接 -->
        <a href="#/home">首页</a>
        <a href="#/news">新闻</a>
        <a href="#/poem">古诗</a>
        <a href="#/mine">我的</a>

        <!-- 根据 :is 属性指定的组件名称,把对应的组件渲染到 component 标签所在的位置 -->
        <!-- 可以把 component 标签当做是【组件的占位符】 -->
        <component :is="comName"></component>
    </div>
    <script src="lib/vue_2.5.22.js"></script>
    <script>
        // #region 定义需要被切换的 4 个组件
        // 首页组件
        const home = {
    
            template: '<h1>首页</h1>'
        }

        // 新闻组件
        const news = {
    
            template: '<h1>新闻</h1>'
        }

        // 古诗组件
        const poem = {
    
            template: '<h1>古诗</h1>'
        }

        // 我的组件
        const mine = {
    
            template: '<h1>我的</h1>'
        }

        // #region vue 实例对象
        var vm = new Vue({
    
            el: '#app',
            data() {
    
                return {
    
                    comName: 'home'
                }
            },
            // 注册私有组件
            components: {
    
                home,
                news,
                poem,
                mine
            }
        });
        // #endregion

        // 监听 window 的 hashchange 事件,根据获取到的最新的 hash 值,切换要显示的组件的名称
        window.addEventListener('hashchange', () => {
    
            // 通过 location.hash 获取到最新的 hash 值
            console.log(location.hash);
            // 将 # 截取掉
            switch (location.hash.slice(1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值