玩轉(zhuǎn)Vue_Webpack中使用router

安裝vue-router

cnpm i vue-router -S

image.png

GoodsList.vue

<template>
    <div>
        <h1>這是 GoodsList 組件</h1>
    </div>
</template>

Account.vue

<template>
    <div>
        <h1>這是 Account 組件</h1>
    </div>
</template>

main.js

// 注意:這里導(dǎo)入的Vue功能不完整,并沒(méi)有提供像網(wǎng)頁(yè)中使用那樣的全部功能
import Vue from 'vue'
// 導(dǎo)入App組件
import App from './App.vue'
// 1.導(dǎo)入VueRouter包
import VueRouter from 'vue-router'
// 2.手動(dòng)安裝VueRouter
Vue.use(VueRouter)

// 導(dǎo)入組件模塊
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'


// 3.創(chuàng)建路由對(duì)象
const router = new VueRouter({
    routes : [
        // account goodlist
        {path : '/account',component : account},
        {path : '/goodslist',component : goodslist},
    ]
})

var vm = new Vue({
    el : '#app',
    data : {},
    // 注意:這里不要使用components注冊(cè)組件,選擇使用render函數(shù)
    render : c => c(App),
    router,// 4.將router對(duì)象賦給vm實(shí)例
})

注意:路由路徑匹配規(guī)則以為著有 router-linkrouter-view,那么它們?cè)谀睦锬兀?br> 因?yàn)槲覀兪褂胷ender函數(shù)將App.vue組件渲染進(jìn)了index.html中的<div id="app"></div>中,App.vue會(huì)覆蓋<div id="app"></div>中寫的所有內(nèi)容,所以我們只需要在App.vue中補(bǔ)寫切換組件代碼即可
App.vue

<template>
    <div>
        <h1>這是 App 組件</h1>
        <router-link to="/account">account組件</router-link>
        <router-link to="/goodslist">account組件</router-link>

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

<script>

</script>

<style>
    
</style>

運(yùn)行cnpm run dev查看

webpack實(shí)現(xiàn)子路由

準(zhǔn)備自組件

image.png

Login.vue

<template>
    <div>
        <h3>這是 Account -- 登錄 子組件</h3>
    </div>
</template>

Register.vue

<template>
    <div>
        <h3>這是 Account -- 注冊(cè) 子組件</h3>
    </div>
</template>

Account.vue

<template>
    <div>
        <h1>這是 Account 組件</h1>
        <router-link to="/account/login">登錄</router-link>
        <router-link to="/account/register">注冊(cè)</router-link>

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

main.js

// 注意:這里導(dǎo)入的Vue功能不完整,并沒(méi)有提供像網(wǎng)頁(yè)中使用那樣的全部功能
import Vue from 'vue'
// 導(dǎo)入App組件
import App from './App.vue'
// 1.導(dǎo)入VueRouter包
import VueRouter from 'vue-router'
// 2.手動(dòng)安裝VueRouter
Vue.use(VueRouter)

// 導(dǎo)入組件模塊
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'

// 導(dǎo)入自組件
import login from './subcomponents/Login.vue'
import register from './subcomponents/Register.vue'


// 3.創(chuàng)建路由對(duì)象
const router = new VueRouter({
    routes : [
        // account goodlist
        {
            path : '/account',
            component : account,
            children : [
                { path : 'login' , component : login},
                { path : 'register' , component : register},
            ]
        },
        {path : '/goodslist',component : goodslist},
    ]
})

var vm = new Vue({
    el : '#app',
    data : {},
    // 注意:這里不要使用components注冊(cè)組件,選擇使用render函數(shù)
    render : c => c(App),
    router,
})

運(yùn)行cnpm run dev查看

樣式style的處理

<template>
    <div>
        <h3>這是 Account -- 登錄 子組件</h3>
    </div>
</template>

<style scoped lang="sass"> /* scoped的意思是 樣式 只作用于當(dāng)前組件,lang的意思是語(yǔ)言,因?yàn)槌薱ss還有sass等語(yǔ)法 */
    div{
        color:red;
    }
</style>

抽離路由模塊

現(xiàn)在在我們的項(xiàng)目中main.js比較龐雜,我們應(yīng)該把路由部分抽離成單獨(dú)的js文件

image.png

router.js

import VueRouter from 'vue-router'
// 導(dǎo)入組件模塊
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'

// 導(dǎo)入自組件
import login from './subcomponents/Login.vue'
import register from './subcomponents/Register.vue'


// 3.創(chuàng)建路由對(duì)象
const router = new VueRouter({
    routes : [
        // account goodlist
        {
            path : '/account',
            component : account,
            children : [
                { path : 'login' , component : login},
                { path : 'register' , component : register},
            ]
        },
        {path : '/goodslist',component : goodslist},
    ]
})

export default router // 將router對(duì)象暴露出去

main.js

// 注意:這里導(dǎo)入的Vue功能不完整,并沒(méi)有提供像網(wǎng)頁(yè)中使用那樣的全部功能
import Vue from 'vue'
// 導(dǎo)入App組件
import App from './App.vue'
// 1.導(dǎo)入VueRouter包
import VueRouter from 'vue-router'
// 2.手動(dòng)安裝VueRouter
Vue.use(VueRouter)

// 導(dǎo)入router模塊
import router from './router.js'

var vm = new Vue({
    el : '#app',
    data : {},
    // 注意:這里不要使用components注冊(cè)組件,選擇使用render函數(shù)
    render : c => c(App),
    router,
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • vue-cli搭建項(xiàng)目 確保安裝了node與npm 再目標(biāo)文件夾下打開終端 執(zhí)行cnpm i vue-cli -g...
    Akiko_秋子閱讀 3,364評(píng)論 1 22
  • 本文基于工作項(xiàng)目開發(fā),做的整理筆記因工作需要,項(xiàng)目框架由最初的Java/jsp模式,逐漸轉(zhuǎn)移成node/expre...
    SeasonDe閱讀 7,541評(píng)論 3 35
  • 第一節(jié) vue:讀音: v-u-eview vue和angular區(qū)別?vue——簡(jiǎn)單、易學(xué)指令以 v-xxx一片...
    黑色的五葉草閱讀 1,195評(píng)論 0 1
  • 第一個(gè) vue-router 路由 路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁(yè)面上的home按鈕時(shí),頁(yè)面中就要顯示hom...
    索倫x閱讀 2,529評(píng)論 0 3
  • MVVM Vue的指令 基本概念: Vue中指令都是以v-xx開頭,指令的作用,最終都是拿著數(shù)據(jù),渲染我們指令標(biāo)簽...
    getElementsByMK閱讀 1,929評(píng)論 0 2

友情鏈接更多精彩內(nèi)容