色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何寫出一個利于擴展的vue路由配置?

錢良釵2年前12瀏覽0評論

vue-router的基本配置

為了方便新學者的閱讀與理解。先來看一下最基本的路由是如何配置的

//0.導入Vue和VueRouter腳本,如果使用模塊化機制編程,要調用Vue.use(VueRouter)

//1.定義(路由)組件。

//可以從其他文件import進來

constFoo={template:'<div>foo</div>'}

constBar={template:'<div>bar</div>'}

//2.定義路由

//每個路由應該映射一個組件。

constroutes=[

{path:'/foo',component:Foo},

{path:'/bar',component:Bar}

]

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

//你還可以傳別的配置參數,不過先這么簡單著吧。

constrouter=newVueRouter({

routes//(縮寫)相當于routes:routes

})

//4.創建和掛載根實例。

//記得要通過router配置參數注入路由,

//從而讓整個應用都有路由功能

constapp=newVue({

router

}).$mount('#app')

如果具體還要什么不懂的,還是多看官方文檔把

便于擴展的路由設置

到這里我當你已經比較熟悉路由配置的相關知識哦,很細的知識點我就不細說了。

場景1

假設你現在接到一個新項目,產品經理要求你開發一個系統,給你的交互圖等資料都是關于系統內部的各個頁面。這時你以為開發的這個系統就僅僅是直接展示系統內部的情況了,甚至你啥都沒想,就直接開始配置路由寫頁面去了。

一開始你差不多寫出了以下的路由配置:

//example1

constrouter=newVueRouter({

routes:[

{path:'/page1',component:Page1},

{path:'/page2',component:Page2}

]

});

像這種配置的,大概就猜出你把系統的菜單等公共部分都放在App.vue里寫好了,然后通過一個<router-view/>進行系統內容的變更。

場景2

后面產品經理跟你說,要系統加一個官網、首頁之類的存在。?。∪绻闩淞税凑丈鲜龅穆酚汕闆r,此時,你是不是有點懵呢?因為你把系統的公共內容如菜單都寫在App.vue上了,但是首頁不需要系統的這些部分。

盡管你再配出了一個首頁的路由,但是你也要想辦法去掉那些已有的系統公共部分。

解決方案

所以我們不能采用上述配置方式。此時我們應該把系統本身作為一個路由,系統公共部分寫在這個路由映射組件上,而系統內部各頁作為子路由,嵌套在其下。

//example2

constrouter=newVueRouter({

routes:[

{

path:'/'

component:Main,

children:[

{

path:'/page1',

component:Page1

},

{

path:'/page2',

component:Page2

}

]

}

]

});

這里的Main組件就是系統的入口,菜單等公共部分就是寫在這里

此時App.vue文件的內容應該就直接是一個路由入口了

<!--App.vue-->

<template>

<div>

<router-view/>

</div>

</template>

如果你一開始是這么寫的話,那么要新增一些非系統內部的頁面,簡直就輕而易舉了。如新增個首頁,直接新增個一級路由就好了

//example3

constrouter=newVueRouter({

routes:[

{

path:'/'

component:Main,

children:[...]

},

{

path:'/home'

component:Home

}

]

});

但是此時我們應該要知道,當僅輸入你的網站域名(沒有具體到哪頁)時,會默認打開path:/的頁面,上述例子就是默認打開系統頁面了。

場景3

你的產品經理又來找事啦。再要求你添加個非系統頁,如登錄注冊頁,打開網站地址域名時默認跳轉到登錄頁。

嗯,按照上一個配置情況,新增一個登錄頁簡直soeasy,但是要改默認打開頁,這就尷尬了。

有人說,直接把系統的那個一級路由改一下不就好了嘛,然后把path:/留給要求默認打開的頁面。

嗯,你說的很有道理,但我,不聽!假設你系統里有比較多的跳轉,從系統內某一頁跳轉到某一頁的情況多,即你已經在代碼里寫了很多個$router.push('xxxx'),如果這么一改,很麻煩,要一個個找出來進行修改。

解決方案

因此,我們一開始的時候,就不應該為系統頁直接占用path:'/'的路由。但是也不能為目前已知的任何一個頁面占用path:'/',因為即使你現在明確哪個頁面是默認打開頁,但是你不能保證你的產品經理不會變心啊,萬一后面又要改呢?

所以!我們要為目前已知的每個頁面都設置路徑名,而不能占用path:'/';而實現默認打開的功能,就要利用redirect進行跳轉

//example4

constrouter=newVueRouter({

routes:[

{

path:'/main'

component:Main,

children:[...]

},

{

path:'/home'

component:Home

},

{

path:'login',

component:Login

},

{

path:'/',

redirect:'/login'

}

]

});

這樣的話,不論后面怎么變化,你只需要做新增/刪除路由以及改變redirect值控制打開默認頁了。這就是最終的解決方案了