<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue-router路由與頁面間導航實例解析

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:26:06
        文檔

        vue-router路由與頁面間導航實例解析

        vue-router路由與頁面間導航實例解析:vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。vue的單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應(yīng)用,是用一些超鏈接來實現(xiàn)頁面切換和跳轉(zhuǎn)的。在vue-router
        推薦度:
        導讀vue-router路由與頁面間導航實例解析:vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。vue的單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應(yīng)用,是用一些超鏈接來實現(xiàn)頁面切換和跳轉(zhuǎn)的。在vue-router

        vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。vue的單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應(yīng)用,是用一些超鏈接來實現(xiàn)頁面切換和跳轉(zhuǎn)的。在vue-router單頁面應(yīng)用中,則是路徑之間的切換,也就是組件的切換。

        vue-router

        我們知道路由定義了一系列訪問的地址規(guī)則,路由引擎根據(jù)這些規(guī)則匹配找到對應(yīng)的處理頁面,然后將請求轉(zhuǎn)發(fā)給頁進行處理。可以說所有的后端開發(fā)都是這樣做的,而前端路由是不存在"請求"一說的。

        前端路由是找到地址匹配的一個組件或者對象將其渲染出來。改變?yōu)g覽器地址不向服務(wù)器發(fā)送請求有兩種方法,

        一是在地址中加入#以欺騙瀏覽器,地址的改變是由于正在進行頁內(nèi)導航;二是使用HTML5的window.history功能,使用URL的hash來模擬一個完整的URL。

        vue-router是官方提供的一套專用的路由工具庫,是vue的一個插件,我們需要在全局引用中通過vue.use()將它引入到vue實例中,

        使用vue-cli創(chuàng)建項目后(init初始化時vue-router確認y)

        我們先來看一下項目src的結(jié)構(gòu),通過cmd進入到項目src目錄下,執(zhí)行 tree -f > list.txt 生成結(jié)構(gòu)樹(保存在list.txt中):

        結(jié)構(gòu)如下:

        src
        ├─assets // 靜態(tài)資源
        │ └─image // 圖片
        │ 
        ├─components // 組件 
        │ └─HelloWorld
        │ HelloWorld.vue
        │ 
        └─router // 路由配置
        │ └─index.js
        │ 
        │ App.vue // 默認程序入口
        │ main.js
        │ 

        1、打開main.js:

        import Vue from 'vue'
        import App from './App'
        import router from './router'
        Vue.config.productionTip = false
        /* eslint-disable no-new */
        new Vue({
         el: '#app',
         router, 
         render: h => h(App) 
        })

        第10行將配置的路由綁定到vue實例上,第11行在vue實例中使用render方法來繪制這個vue組件(App)完成初始化

        Render是vue2新增的具有特色的方法,為了得到更好的運行速度,vue2也采用的類似react的Virtual Dom(虛擬Dom)

         2、然后我們在components中注冊幾個組件

        3、打開router/index.js配置路由

        import Vue from 'vue'
        import Router from 'vue-router'
        import Singer from '@/components/rank/rank'
        Vue.use(Router) // 注冊router
        export default new Router({
         routes: [
         {
         path: '/',
         name: 'Hello',
         component: MHeader // 路由中指定組件
         },
         {
         path: '/rank',
         name: 'rank',
         component: Rank
         }
         ]
        })

        路由的模式

        關(guān)鍵詞:"mode","history模式","hash模式","Abstract模式"

        我們可以在創(chuàng)建的Router中使用模式,如參數(shù)mode:history的參數(shù),這個值意思是使用history模式,這種模式充分利用了history.pushState API來完成URL的跳轉(zhuǎn)而無需重新加載頁面 ,

        如果不使用history模式,當訪問rank的時候路由就會變成:

        http://localhost/#rank

        反之為:

        http://localhost/rank

        這就是history模式和hash模式的區(qū)別,除此之外還有一種abstract模式

      1. Hash:使用URL hash值作為路由,
      2. History:依賴HTML5 History API和服務(wù)器配置
      3. Abstract:支持所有JavaScript運行環(huán)境,如node服務(wù)器端。如果發(fā)現(xiàn)沒有瀏覽器的API,路由就會強制進入這個模式
      4. 路由與導航

        關(guān)鍵詞:"router-link" , "router-view"

        vue-router提供兩個指令標簽組件來處理這個導航與自動渲染邏輯:

      5. <router-view>——渲染路徑匹配到的組件視圖,
      6. <router-link>——支持用戶在具有路由功能的應(yīng)用中導航
      7. 我們使用整兩個標簽組件來完成一個簡單的頁面布局:

        在路由使用時要明確一個原則就是:不直接引用路由定義,(即不要在router-link直接通過 to='conpontents/rank/rank' 來導向路由),當顯式引用路由定義的URL一旦發(fā)生變化,所有引用的地方都要修改。

        在router-link通過名稱引用路由:向to屬性傳入一個對象顯式的聲明路由的名稱:

        <router-link :to="{ name:'rank' }">

        這里留意使用v-bind綁定(簡寫:),因為這里需要向router-link傳遞的是一個對象{ name:'rank' }而不是一個字符串

        動態(tài)路由

        關(guān)鍵詞:"動態(tài)路由參數(shù)","params","$router.params"

        vue-router將參數(shù)融入到路由的路徑定義之內(nèi)成為路由的一部分,我們稱這種參數(shù)為"動態(tài)路徑參數(shù)";

        使用非常簡單,在參數(shù)名之前加上":",然后將參數(shù)寫在路由定義的path內(nèi),

         routers:[{
         name:'BookDetails',
         path:'books/:id',
         component:BookDetails 
         }]

        1、這樣定義之后,vue-router就會自動匹配/books/1、/books/2、...、/books/n 形式的路由模式,因為這樣定義的路由的數(shù)量是不確定的,所以也稱為"動態(tài)路由"。

        2、在<router-link>中我們就可以加入一個params的屬性來指定具體的參數(shù)值:

         <router-link :to="{ name:'BookDetails',params:{ id:1 } }">
         //...
         </router-link>

        3、當我們導航進入圖書詳情頁之后,我們可能需要獲取屬性指定的參數(shù)值(即重新將:id參數(shù)讀取出來),我們可以通過$router.params來完成:

         export default {
         created () {
         const bookID = this.$router.params.id
         }
         }

        嵌套式路由

        關(guān)鍵詞:"children",

        我們利用下面的場景,首頁/home/讀書詳情 頁面,讀書詳情也我們不需要底部的導航區(qū)域,但是我們使用之前的路由定義,所有的頁面都應(yīng)該具有想用的底部導航條,按前面的路由結(jié)構(gòu)是不可以導航到圖書詳情頁的,如下:

        所以我們就需要另一種定義路由的方式,對前面的路由進行調(diào)整,

        嵌套式路由又叫做子路由,要將路由顯示到子視圖中就要相應(yīng)的子路由與之對應(yīng),我們只需要在路由定義中使用children數(shù)組屬性就可以定義子路由了:

        routers:[
         { 
         name:'Main',
         path:'/',
         component:Main,
         children:[
         { name:'Home',path:'home',component:Home }
         { name:'Me',path:'me',component:Me }
         ] 
         },
         { name:'BookDetail',path:'/books/:id',component:BookDetail } 
        ]

        需要注意的是以"/"開頭的嵌套路徑會被當做根路徑,所以不要在子路由上加上"/";

        重定向路由與別名

        關(guān)鍵詞:"redirect","alias"

        重定向也是通過 routes 配置來完成,下面例子是從 /a 重定向到 /b:

         routes: [
         { path: '/a', redirect: '/b' }
         ]
        // 重定向的目標也可以是一個命名的路由
         routes: [
         { path: '/a', redirect: { name: 'foo' }}
         ]

        另外我們需要區(qū)別重定向和別名,『重定向』的意思是,當用戶訪問 /a時,URL 將會被替換成 /b,然后匹配路由為 /b,那么『別名』又是什么呢?

        /a 的別名是 /b,意味著,當用戶訪問 /b 時,URL 會保持為 /b,但是路由匹配則為 /a,就像用戶訪問 /a 一樣:

        利用alias給路由設(shè)置別名

         routes: [
         { path: '/a', component: A, alias: '/b' }
         ]

        總結(jié)

        到這里vue路由的基礎(chǔ)我們已經(jīng)總結(jié)完畢,我們需要在實戰(zhàn)中不斷練習,多多的去解決問題,方能更好的使用路由 幫我們完成任務(wù),同時為vue進階的路由知識打基礎(chǔ)

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue-router路由與頁面間導航實例解析

        vue-router路由與頁面間導航實例解析:vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。vue的單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應(yīng)用,是用一些超鏈接來實現(xiàn)頁面切換和跳轉(zhuǎn)的。在vue-router
        推薦度:
        標簽: 導航 VUE 頁面
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲第一极品精品无码久久| 亚洲校园春色另类激情| 亚洲精品中文字幕无码蜜桃 | 免费A级毛片无码免费视| 91亚洲导航深夜福利| 16女性下面扒开无遮挡免费| 国产一区二区三区免费看| 亚洲欧美成人av在线观看| 免费看片A级毛片免费看| 久久亚洲熟女cc98cm| 99久久99久久免费精品小说| 亚洲女人被黑人巨大进入| jizz在线免费播放| 国产AV无码专区亚洲精品| 人人揉揉香蕉大免费不卡| 亚洲女人初试黑人巨高清| 国产免费无码一区二区| 日韩精品一区二区亚洲AV观看| 国产特黄一级一片免费| yy6080久久亚洲精品| 日韩精品无码免费专区网站| 亚洲欧洲日产国码久在线观看 | 亚洲日韩av无码中文| 人人狠狠综合久久亚洲高清| 西西人体免费视频| 亚洲人成网站在线观看青青 | 精品国产污污免费网站aⅴ| ww亚洲ww在线观看国产| 亚洲?V无码乱码国产精品| 男女作爱在线播放免费网站| 亚洲国产系列一区二区三区| 18禁美女裸体免费网站| 亚洲第一成年网站视频| 久久国产成人精品国产成人亚洲| 可以免费观看的国产视频| 亚洲日韩乱码中文字幕| MM131亚洲国产美女久久| 每天更新的免费av片在线观看| 亚洲国产精品18久久久久久| 亚洲欧洲成人精品香蕉网| 成年女人看片免费视频播放器|