zoukankan      html  css  js  c++  java
  • 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组件之间的关系

  • 相关阅读:
    IIS的各种身份验证详细测试
    HTTP Error 401.3 Unauthorized Error While creating IIS 7.0 web site on Windows 7
    C/S and B/S
    WCF ContractFilter mismatch at the EndpointDispatcher exception
    Configure WCF
    Inheritance VS Composition
    Unhandled Error in Silverlight Application, code 2103 when changing the namespace
    Java RMI VS TCP Socket
    Principles Of Object Oriented Design
    Socket处理发送和接收数据包,一个小实例:
  • 原文地址:https://www.cnblogs.com/zycs/p/14185878.html
Copyright © 2011-2022 走看看