• vue-router的基本介绍


    vue-router

    什么是路由

    路由是一个网络工程里面的术语

    路由就是通过网络把信息从源地址传输到目的地的活动 — 维基百科

    后端路由

    是url和后端逻辑的对应关系

    前端路由

    是url和组件的对应关系

    前端路由核心就是改变url但是页面不进行整体的刷新

    vue-router

    vue-router是vue官方的路由插件 它和vue.js是深度集成的,适合用于构建单页面应用

    官网 https://router.vuejs.org/zh/

    vue是基于路由的组件的

    路由用于设定访问路径,将路径和组件映射起来

    在vue-router的单页面应用中,页面的路径改变就是组建的切换

    前端路由规则

    • 前端路由的核心是改变URL,但是页面不进行整体的刷新
    • URL的hash也就是锚点(#), 本质上是改变window.location的href属性
    • 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新

    HTML5的history模式:pushState(本人也不是很了解)

    history接口是HTML5新增的, 它有五种模式改变URL而不刷新页面

    • history.pushState({},'','url')
      • 将url压入栈结构
      • 栈结构的特点是先进后出
      • 可以返回
    • history.replaceState({},'','url')
      • 替换url
      • 不能返回
    • history.back()
      • 返回
    • history.forward()
      • 前进
    • history.go()
      • history.go(-1)等价于history.back()
      • history.go(1)等价于history.forward()

    单页面应用步骤七步骤:

    1、引入JS文件(vue和Vuerouter)

    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

    2、使用 router-link 组件来导航

    通过to属性来指定链接

    router-link默认会被渲染成一个超链接标签

    <router-link to="链接名">棒棒糖</router-link>

    3、设置路由出口

    将路由匹配到的组件渲染到<router-view></router-view>组件里

    随项目情况而视,可写可不写外层盒子

    <p class="tab-content">
      <router-view></router-view>
    </p>

    作用:通过Vue的解析,解析成a标签 点击过后切换组件的显示,而显示的组件是有to属性来控制的

    router-view组件也是VueRouter提供的组件,对应的是地址指向的组件渲染

    4、写组件(定义路由组件,此组件可以从其他文件夹import进来)

    const Foo = {
        template: '<div><img src="/img/01.jpg" alt=""></div>'

      }

    5、写路由规则(每一个路由映射一个组件)

    / 这里定义的是URL和组件的对应关系
    const routes = [{
      path: 'to属性的链接名',
      component:组件中的组件名
    }]


    const routes = [{
      path: '/foo',
      component: Foo
    }]

    6、创建router实例,传入routes配置,也可传入其它配置参数

    const router = new VueRouter({
        routes // (缩写) 相当于 routes: routes
    })

    7、挂载到根实例化,通过 router 配置参数注入路由,从而让整个应用都有路由功能

    const app = new Vue({
      el: '#app',
      router
    })

    案例

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <title>Document</title>
     8 
     9 </head>
    10 
    11 <body>
    12     <!-- 1. 导入vue和vue-router
    13     2. 定义跳转路径 router-link
    14     3. router-view
    15     4. 写组件
    16     5. 写路由规则
    17     6. 创建路由对象
    18     7. 挂载到顶级Vue实例上面去 -->
    19 
    20     <!-- 2. 定义跳转路径 router-link -->
    21     <div id="app">
    22         <p>
    23             <router-link to="/foo">棒棒糖</router-link>
    24             <router-link to="/bar">水果糖</router-link>
    25             <router-link to="/girl">奶糖</router-link>
    26         </p>
    27         <!-- 3. router-view -->
    28         <div class="tab-content">
    29             <router-view></router-view>
    30 
    31         </div>
    32     </div>
    33     <!-- 1.引入JS文件 -->
    34     <script src="https://unpkg.com/vue/dist/vue.js"></script>
    35     <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    36     <script>
    37         // 4. 写组件
    38         const Foo = {
    39             template: '<div><img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3231173445,2581934253&fm=26&gp=0.jpg" alt=""></div>'
    40         }
    41         const Bar = {
    42             template: '<div><img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1013445547,1049096974&fm=26&gp=0.jpg" alt=""></div>'
    43         }
    44         const Girl = {
    45                 template: '<div><img src="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1984603473,1171836157&fm=26&gp=0.jpg" alt=""></div>'
    46             }
    47             // 5. 写路由规则
    48           const routes = [{
    49             path: '/foo',
    50             component: Foo
    51         }, {
    52             path: '/bar',
    53             component: Bar
    54         }, {
    55             path: '/girl',
    56             component: Girl
    57         }]
    58             // 6. 创建路由对象
    59         const router = new VueRouter({
    60                 routes
    61             })
    62             // 7. 挂载到顶级Vue实例上面去
    63         const app = new Vue({
    64             el: '#app',
    65             router
    66         })
    67     </script>
    68 </body>
    69 
    70 </html>

    通过这个简单的案例我们可以看出来,只要记住这七个步骤,就可以简单的实现单页面应用的导航组件,点击第几个router-link组件,相对应的<router-view></router-view>组件出现映射的内容

    可以在打印台清晰明了的看见布局,router-link和router-view组件之间的关系

  • 相关阅读:
    今天18:40分左右一部价值500多块捷安特自行车被盗!
    利用ASP.net上传文件
    _desktop.ini
    Visual Studio .NET 设置移植工具
    审计厅的项目终于可以告一段落了
    Word2CHM Assistant(Word2CHM助手)V2.1.0 破解版
    最近比较烦!
    delphi 中 Format 用法总汇
    谈谈公司管理及需求方面的问题
    [待续]SQLSERVER无法访问远程服务器问题
  • 原文地址:https://www.cnblogs.com/zycs/p/14185878.html
Copyright © 2020-2023  润新知