當前位置 主頁 > 服務器問題 > win服務器問題匯總 > 最大化 縮小

    使用Vue-Router 2實現路由功能實例詳解

    欄目:win服務器問題匯總 時間:2019-11-13 18:22

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構建單頁面應用。vue的單頁面應用是基于路由和組件的,路由用于設定訪問路徑,并將路徑和組件映射起來。傳統的頁面應用,是用一些超鏈接來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是組件的切換。

    注意:vue-router 2只適用于Vue2.x版本,下面我們是基于vue2.0講的如何使用vue-router 2實現路由功能。

    推薦使用npm安裝。

    npm install vue-router

    一、使用路由

    在main.js中,需要明確安裝路由功能:

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import App from './App.vue'
    Vue.use(VueRouter)

    1.定義組件,這里使用從其他文件import進來

    import index from './components/index.vue'
    import hello from './components/hello.vue'

    2.定義路由

    const routes = [
     { path: '/index', component: index },
     { path: '/hello', component: hello },
    ]

    3.創建 router 實例,然后傳 routes 配置

    const router = new VueRouter({
     routes
    })

    4.創建和掛載根實例。通過 router 配置參數注入路由,從而讓整個應用都有路由功能

    const app = new Vue({
     router,
     render: h => h(App)
    }).$mount('#app')

    經過上面的配置之后呢,路由匹配到的組件將會渲染到App.vue里的<router-view></router-view>

    那么這個App.vue里應該這樣寫:

    <template>
     <div >
      <router-view></router-view>
     </div>
    </template>

    index.html里呢要這樣寫:

    <body>
     <div ></div>
    </body>

    這樣就會把渲染出來的頁面掛載到這個id為app的div里了。

    二、重定向 redirect

    const routes = [
     { path: '/', redirect: '/index'},  // 這樣進/ 就會跳轉到/index
     { path: '/index', component: index }
    ]

    三、嵌套路由

    const routes = [
     { path: '/index', component: index,
      children: [
       { path: 'info', component: info}
      ]
      }
    ]

    通過/index/info就可以訪問到info組件了

    四、懶加載

    const routes = [
     { path: '/index', component: resolve => require(['./index.vue'], resolve) },
     { path: '/hello', component: resolve => require(['./hello.vue'], resolve) },
    ]

    通過懶加載就不會一次性把所有組件都加載進來,而是當你訪問到那個組件的時候才會加載那一個。對于組件比較多的應用會提高首次加載速度。

    五、<router-link>

    在vue-router 1中,使用的是

    在vue-router 2中,使用了<router-link></router-link>替換1版本中的a標簽

    <!-- 字符串 -->
    <router-link to="home">Home</router-link>
    <!-- 渲染結果 -->
    <a href="home" rel="external nofollow" >Home</a>
    <!-- 使用 v-bind 的 JS 表達式 -->
    <router-link v-bind:to="'home'">Home</router-link>
    <!-- 不寫 v-bind 也可以,就像綁定別的屬性一樣 -->
    <router-link :to="'home'">Home</router-link>
    <!-- 同上 -->
    <router-link :to="{ path: 'home' }">Home</router-link>
    <!-- 命名的路由 -->
    <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
    <!-- 帶查詢參數,下面的結果為 /register?plan=private -->
    <router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>
    
教我怎样炒股