這篇文章將為大家詳細講解有關vue-router如何使用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司服務項目包括會澤網站建設、會澤網站制作、會澤網頁制作以及會澤網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,會澤網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到會澤省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!一、引子
要學習vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題
二、vue-router是什么
這里的路由并不是指我們平時所說的硬件路由器, 這里的路由就是SPA(單頁應用)的路徑管理器 。再通俗的說,vue-router就是WebApp的鏈接路徑管理系統(tǒng)。 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構建單頁面應用。vue的單頁面應用是基于路由和組件的,路由用于設定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應用,是用一些超鏈接來實現(xiàn)頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是組件的切換。 路由模塊的本質 就是建立起url和頁面之間的映射關系 。 至于我們?yōu)樯恫荒苡胊標簽,這是因為用Vue做的都是單頁應用,就相當于只有一個主的index.html頁面,所以你寫的標簽是不起作用的,你必須使用vue-router來進行管理。
三、vue-router實現(xiàn)原理
SPA(single page application):單一頁面應用程序,只有一個完整的頁面;它在加載頁面時,不會加載整個頁面,而是只更新某個指定的容器中內容。 單頁面應用(SPA)的核心之一是: 更新視圖而不重新請求頁面 ;vue-router在實現(xiàn)單頁面前端路由時,提供了兩種方式:Hash模式和History模式;根據mode參數來決定采用哪一種方式。
1、Hash模式:
vue-router 默認 hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,于是當 URL 改變時,頁面不會重新加載。hash(#)是URL 的錨點,代表的是網頁中的一個位置,單單改變#后的部分,瀏覽器只會滾動到相應位置,不會重新加載網頁,也就是說 #是用來指導瀏覽器動作的,對服務器端完全無用,HTTP請求中也不會不包括#;同時每一次改變#后的部分,都會在瀏覽器的訪問歷史中增加一個記錄,使用”后退”按鈕,就可以回到上一個位置;所以說 Hash模式通過錨點值的改變,根據不同的值,渲染指定DOM位置的不同數據
2、History模式:
由于hash模式會在url中自帶#,如果不想要很丑的 hash,我們可以用路由的 history 模式,只需要在配置路由規(guī)則時,加入"mode: 'history'",這種模式充分利用 history.pushState API 來完成 URL 跳轉而無須重新加載頁面。
//main.js文件中 const router = new VueRouter({ mode: 'history', routes: [...] })
當你使用 history 模式時,URL 就像正常的 url,例如 http://yoursite.com/user/id,比較好看! 不過這種模式要玩好,還需要后臺配置支持。因為我們的應用是個單頁客戶端應用,如果后臺沒有正確的配置,當用戶在瀏覽器直接訪問 http://oursite.com/user/id 就會返回 404,這就不好看了。 所以呢, 你要在服務端增加一個覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態(tài)資源,則應該返回同一個 index.html 頁面,這個頁面就是你 app 依賴的頁面。
export const routes = [ {path: "/", name: "homeLink", component:Home} {path: "/register", name: "registerLink", component: Register}, {path: "/login", name: "loginLink", component: Login}, {path: "*", redirect: "/"}]
此處就設置如果URL輸入錯誤或者是URL 匹配不到任何靜態(tài)資源,就自動跳到到Home頁面
3、使用路由模塊來實現(xiàn)頁面跳轉的方式
方式1:直接修改地址欄
方式2:this.$router.push(‘路由地址')
方式3: <router-link to="路由地址"></router-link>
四、vue-router使用方式
1:下載 npm i vue-router -S
2:在main.js中引入 import VueRouter from 'vue-router';
3:安裝插件 Vue.use(VueRouter);
4:創(chuàng)建路由對象并配置路由規(guī)則
let router = new VueRouter({routes:[{path:'/home',component:Home}]});
5:將其路由對象傳遞給Vue的實例,options中加入 router:router
6:在app.vue中留坑 <router-view></router-view>
具體實現(xiàn)請看如下代碼:
//main.js文件中引入 import Vue from 'vue'; import VueRouter from 'vue-router'; //主體 import App from './components/app.vue'; import Home from './components/home.vue' //安裝插件 Vue.use(VueRouter); //掛載屬性 //創(chuàng)建路由對象并配置路由規(guī)則 let router = new VueRouter({ routes: [ //一個個對象 { path: '/home', component: Home } ] }); //new Vue 啟動 new Vue({ el: '#app', //讓vue知道我們的路由規(guī)則 router: router, //可以簡寫router render: c => c(App), })
最后記得在在app.vue中“留坑”
//app.vue中 <template> <div> <!-- 留坑,非常重要 --> <router-view></router-view> </div> </template> <script> export default { data(){ return {} } } </script>
五、vue-router核心要點
1.vue-router如何參數傳遞
①用name傳遞參數
在路由文件src/router/index.js里配置name屬性
routes: [ { path: '/', name: 'Hello', component: Hello } ]
模板里(src/App.vue)用 $router.name
來接收 比如: <p>{{ $router.name}}</p>
②通過 <router-link>
標簽中的to傳參
這種傳參方法的基本語法:
<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>
比如先在src/App.vue文件中
<router-link :to="{name:'hi1',params:{username:'jspang',id:'555'}}">Hi頁面1</router-link>
然后把src/router/index.js文件里給hi1配置的路由起個name,就叫hi1.
{path:'/hi1',name:'hi1',component:Hi1}
最后在模板里(src/components/Hi1.vue)
用 $route.params.username
進行接收.
{{$route.params.username}}-{{$route.params.id}}
③vue-router 利用url傳遞參數----在配置文件里以冒號的形式設置參數。
我們在/src/router/index.js文件里配置路由
{ path:'/params/:newsId/:newsTitle', component:Params }
我們需要傳遞參數是新聞ID(newsId)和新聞標題(newsTitle).所以我們在路由配置文件里制定了這兩個值。 在src/components目錄下建立我們params.vue組件,也可以說是頁面。我們在頁面里輸出了url傳遞的的新聞ID和新聞標題。
<template> <div> <h3>{{ msg }}</h3> <p>新聞ID:{{ $route.params.newsId}}</p> <p>新聞標題:{{ $route.params.newsTitle}}</p> </div> </template> <script> export default { name: 'params', data () { return { msg: 'params page' } } } </script>
在App.vue文件里加入我們的 <router-view>
標簽。這時候我們可以直接利用url傳值了
<router-link to="/params/198/jspang website is very good">params</router-link>
2.單頁面多路由區(qū)域操作
在一個頁面里我們有2個以上 <router-view>
區(qū)域,我們通過配置路由的js文件,來操作這些區(qū)域的內容
①App.vue文件,在 <router-view>
下面新寫了兩行 <router-view> 標簽,并加入了些CSS樣式
<template> <div id="app"> <img src="./assets/logo.png"> <router-link :to="{name:'HelloWorld'}"><h2>H1</h2></router-link> <router-link :to="{name:'H1'}"><h2>H2</h2></router-link> <router-view></router-view> <router-view name="left" /> <router-view name="right" /> </div> </template>
②需要在路由里配置這三個區(qū)域,配置主要是在components字段里進行
export default new Router({ routes: [ { path: '/', name: 'HelloWorld', components: {default: HelloWorld, left:H1,//顯示H1組件內容'I am H1 page,Welcome to H1' right:H2//顯示H2組件內容'I am H2 page,Welcome to H2' } }, { path: '/h2', name: 'H1', components: {default: HelloWorld, left:H2,//顯示H2組件內容 right:H1//顯示H1組件內容 } } ] })
上邊的代碼我們編寫了兩個路徑,一個是默認的‘/',另一個是‘/Hi'.在兩個路徑下的components里面,我們對三個區(qū)域都定義了顯示內容。最后頁面展示如下圖:
3.vue-router配置子路由(二級路由)
實際生活中的應用界面,通常由多層嵌套的組件組合而成。同樣地,URL中各段動態(tài)路徑也按某種結構對應嵌套的各層組件,例如:
如何實現(xiàn)下圖效果(H1頁面和H2頁面嵌套在主頁中)?
①首先用標簽增加了兩個新的導航鏈接
<router-link :to="{name:'HelloWorld'}">主頁</router-link> <router-link :to="{name:'H1'}">H1頁面</router-link> <router-link :to="{name:'H2'}">H2頁面</router-link>
②在HelloWorld.vue加入 <router-view> 標簽,給子模板提供插入位置
<template> <div class="hello"> <h2>{{ msg }}</h2> <router-view></router-view> </div> </template>
③在components目錄下新建兩個組件模板 H1.vue 和 H2.vue 兩者內容類似,以下是H1.vue頁面內容:
<template> <div class="hello"> <h2>{{ msg }}</h2> </div> </template> <script> export default { data() { return { msg: 'I am H1 page,Welcome to H1' } } } </script>
④修改router/index.js代碼,子路由的寫法是在原有的路由配置下加入children字段。
routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld, children: [{path: '/h2', name: 'H1', component: H1}, {path: '/h3', name: 'H2', component: H2} ] } ]
4.vue-router跳轉方法
<button @click="goToMenu" class="btn btn-success">Let's order!</button> ..... <script> export default{ methods:{ goToMenu(){ this.$router.go(-1)//跳轉到上一次瀏覽的頁面 this.$router.replace('/menu')//指定跳轉的地址 this.$router.replace({name:'menuLink'})// 指定跳轉路由的名字下 this.$router.push('/menu')通過push進行跳轉 this.$router.push({name:'menuLink'})通過push進行跳轉路由的名字下 } } } </script>
5.404頁面的設置
用戶會經常輸錯頁面,當用戶輸錯頁面時,我們希望給他一個友好的提示頁面,這個頁面就是我們常說的404頁面。vue-router也為我們提供了這樣的機制。 ①設置我們的路由配置文件(/src/router/index.js)
{ path:'*', component:Error }
這里的path:'*'就是輸入地址不匹配時,自動顯示出Error.vue的文件內容
②在/src/components/文件夾下新建一個Error.vue的文件。簡單輸入一些有關錯誤頁面的內容。
<template> <div> <h3>{{ msg }}</h3> </div> </template> <script> export default { data () { return { msg: 'Error:404' } } } </script>
此時我們隨意輸入一個錯誤的地址時,便會自動跳轉到404頁面
關于“vue-router如何使用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
本文名稱:vue-router如何使用-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article28/cesgcp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站策劃、定制網站、網站改版、App設計、虛擬主機、網站導航
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)