zoukankan      html  css  js  c++  java
  • Vue-router(vue2.0)用法示例

    一.新建3个组件

     1./src/components/post.vue

    <template>
    <div>
    hello world! this is POST!
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

    2./src/components/view.vue

    <template>
    <div>
    hello world! this is VIEW!
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

    3./src/components/vote.vue

    <template>
    <div>
    hello world! this is VOTE!
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

     

    二.路由

    1.入口文件main.js,导入路由

    import router from './router'
    

      

    可以看到router是从router这个文件夹中引入的

    2.打开router文件夹下的index.js,加入两个路由post和view

    import Vue from 'vue'
    import Router from 'vue-router'
    import post from '@/components/post'
    import view from '@/components/view'
    
    // 注册路由
    Vue.use(Router)
    
    export default new Router({
      mode: 'history',
      routes: [
        { path: 'post', name: 'post', component: post },
        { path: 'view', name: 'view', component: view }
      ]
    })
    

      

    PS:mode有三种模式
    (1).hash模式:使用URL hash值来作为路由。支持所有浏览器。默认,这会在地址栏中出现#
    (2).history模式:依赖HTML5 History API和服务器配置。查看HTML5 History模式。
    (3).abstract模式:支持所有JavaScript运行环境,如Node.js服务器端。如果发现没有浏览器的API,路由会自动强制进入这个模式。

    三.使用路由

    1.app.vue中写入

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-link :to="/post">post</router-link>
        <router-link :to="{ name: 'view', params: {} }">view</router-link>
        <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {}
    </script>
    

      

    2.解释点:

    (1)router-link
    a.router-link是一个组件,它默认会被渲染成一个带有链接的a标签,通过to属性指定链接地址
    b.to:这是一个必须设置的属性,否则路由无法生效。除了使用name,也可以是用path
    <router-link to="/post">post</router-link>
    c.replace
    一个布尔类型,默认为false。如果replace设置为true,那么导航不会留下history记录,点击浏览器回退按钮不会再回到这个路由。
    d.tag
    router-link默认渲染成a标签,也有方法让它渲染成其他标签,tag属性就用来设置router-link渲染成什么标签的。

    (2).router-view
    这个组件十分关键,它就是用来渲染匹配到的路由的。可以附加transition过渡,也可以配合<keep-alive>来缓存数据.

    四.动态路由(携带参数的路由)

    1.使用路由命名name
    (1).修改view组件:

    <template>
    <div>
    hello world! this is VIEW! {{ $route.params.id }}
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

    (2).修改App.vue

    <router-link :to="{ name: 'view', params: {id: 10} }">view</router-link>
    

      

    2.使用路由path

    (1).修改router下的index.js

    { path: '/view/:id', name: 'view', component: view }
    

      

    (2).修改App.vue

    <router-link to="/view/10">view</router-link>
    

      

    (3).修改view.vue

    <template>
    <div>
    hello world! this is VIEW! {{ $route.params.id }}
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

    五.嵌套路由(在组件中使用路由)

    我们实现在view组件中包含post组件和vote组件

    1.改写App.vue

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-link :to="{ name: 'post', params: {} }">post</router-link>
        <router-link :to="{ name: 'view', params: {} }">view</router-link>
        <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {}
    </script>
    

      

    2.改写router/index.js

    export default new Router({
      mode: 'history',
      routes: [
        {
          path: '/view',
          name: 'view',
          component: view,
          children: [
            { path: '/post', name: 'post', component: post },
            { path: '/vote', name: 'vote', component: vote }
          ]
        }
      ]
    })
    

      

    3.改写view.vue

    <template>
    <div>
    <router-link :to="{ name: 'post', params: {} }">post</router-link>
    <router-link :to="{ name: 'vote', params: {} }">vote</router-link>
    <router-view></router-view>
    </div>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    

      

    六.导航式编程router.push()

    点击router-link时执行的就是router.push()的方法,我们可以单独给它一个点击事件,同样可以实现跳转

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-link :to="{ name: 'post', params: {} }">post</router-link>
        <router-link :to="{ name: 'view', params: {} }">view</router-link>
        <button @click="goView">跳转</button>
        <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {
      methods: {
        goView () {
          this.$router.push('/view')
        }
      }
    }
    </script>
    

      

  • 相关阅读:
    学姐学长们的测试
    loli的测试——搜索
    搜索-2
    单调队列
    乱搞题 (不知道怎么分类)
    对拍及数据生成
    搜索-1
    矩形重叠
    拼写单词
    java笔记
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7395673.html
Copyright © 2011-2022 走看看