1. 程式人生 > 資訊 >北京地鐵車站實現 AED 裝置全覆蓋

北京地鐵車站實現 AED 裝置全覆蓋

 路由,其實就是指向的意思,當我點選頁面上的home按鈕時,頁面中就要顯示home的內容,如果點選頁面上的about 按鈕,頁面中就要顯示about 的內容。Home按鈕  => home 內容, about按鈕 => about 內容,也可以說是一種對映. 所以在頁面上有兩個部分,一個是點選部分,一個是點選之後,顯示內容的部分。 

  點選之後,怎麼做到正確的對應,比如,我點選home 按鈕,頁面中怎麼就正好能顯示home的內容。這就要在js 檔案中配置路由。

  路由中有三個基本的概念 route, routes, router。

    1, route,它是一條路由,由這個英文單詞也可以看出來,它是單數, Home按鈕  => home內容, 這是一條route,  about按鈕 => about 內容, 這是另一條路由。

    2, routes 是一組路由,把上面的每一條路由組合起來,形成一個數組。[{home 按鈕 =>home內容 }, { about按鈕 => about 內容}]

    3, router 是一個機制,相當於一個管理者,它來管理路由。因為routes 只是定義了一組路由,它放在哪裡是靜止的,當真正來了請求,怎麼辦? 就是當用戶點選home 按鈕的時候,怎麼辦?這時router 就起作用了,它到routes 中去查詢,去找到對應的 home 內容,所以頁面中就顯示了 home 內容。

    4,客戶端中的路由,實際上就是dom 元素的顯示和隱藏。當頁面中顯示home 內容的時候,about 中的內容全部隱藏,反之也是一樣。客戶端路由有兩種實現方式:基於hash 和基於html5 history api.

  vue-router中的路由也是基於上面的內容來實現的

  在vue中實現路由還是相對簡單的。因為我們頁面中所有內容都是元件化的,我們只要把路徑和元件對應起來就可以了,然後在頁面中把元件渲染出來。

  1, 頁面實現(html模版中)

    在vue-router中, 我們看到它定義了兩個標籤<router-link> 和<router-view>來對應點選和顯示部分。<router-link> 就是定義頁面中點選的部分,<router-view> 定義顯示部分,就是點選後,區配的內容顯示在什麼地方。所以 <router-link> 還有一個非常重要的屬性 to,定義點選之後,要到哪裡去, 如:<router-link  to="/home">Home</router-link>

  2, js 中配置路由

    首先要定義route,  一條路由的實現。它是一個物件,由兩個部分組成: path和component.  path 指路徑,component 指的是元件。如:{path:’/home’, component: home}

    我們這裡有兩條路由,組成一個routes: 

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
]

  最後建立router 對路由進行管理,它是由建構函式 new vueRouter() 建立,接受routes 引數。

const router = new VueRouter({
      routes // routes: routes 的簡寫
})

  配置完成後,把router 例項注入到 vue 根例項中,就可以使用路由了

const app = new Vue({
  router
}).$mount('#app')

  執行過程:當用戶點選 router-link 標籤時,會去尋找它的 to 屬性, 它的 to 屬性和 js 中配置的路徑{ path: '/home', component: Home}  path 一一對應,從而找到了匹配的元件, 最後把元件渲染到 <router-view> 標籤所在的地方。所有的這些實現才是基於hash 實現的。

 vue-cli 建立一個專案體驗一下, 當然不要忘記安裝vue-router

  1, 在src 目錄下新建兩個元件,home.vue 和 about.vue

<template>
    <div>
        <h1>home</h1>
        <p>{{msg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                msg: "我是home 元件"
            }
        }
    }
</script>
<template>
    <div>
        <h1>about</h1>
        <p>{{aboutMsg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                aboutMsg: '我是about元件'
            }
        }
    }
</script>

  2, 在 App.vue中 定義<router-link > 和 </router-view>  

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <header>
    <!-- router-link 定義點選後導航到哪個路徑下 -->
      <router-link to="/home">Home</router-link>
      <router-link to="/about">About</router-link>
    </header>
    <!-- 對應的元件內容渲染到router-view中 -->
    <router-view></router-view>   
  </div>
</template>

<script>
export default {
  
}
</script>

  3,  在 src目錄下再新建一個router.js 定義router, 就是定義 路徑到 元件的 對映。

import Vue from "vue";
import VueRouter from "vue-router";

// 引入元件
import home from "./home.vue";
import about from "./about.vue";

// 要告訴 vue 使用 vueRouter
Vue.use(VueRouter);

const routes = [
    {
        path:"/home",
        component: home
    },
    {
        path: "/about",
        component: about
    }
]

var router =  new VueRouter({
    routes
})
export default router;