<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關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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的那些事兒

        來源:懂視網 責編:小采 時間:2020-11-27 22:14:18
        文檔

        關于vue-router的那些事兒

        關于vue-router的那些事兒:一、引子 要學習vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題 二、vue-router是什么 這里的路由并不是指我們平時所說的硬件路由
        推薦度:
        導讀關于vue-router的那些事兒:一、引子 要學習vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題 二、vue-router是什么 這里的路由并不是指我們平時所說的硬件路由

        一、引子

        要學習vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題

        二、vue-router是什么

        這里的路由并不是指我們平時所說的硬件路由器, 這里的路由就是SPA(單頁應用)的路徑管理器 。再通俗的說,vue-router就是WebApp的鏈接路徑管理系統。 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構建單頁面應用。vue的單頁面應用是基于路由和組件的,路由用于設定訪問路徑,并將路徑和組件映射起來。傳統的頁面應用,是用一些超鏈接來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是組件的切換。 路由模塊的本質 就是建立起url和頁面之間的映射關系 。 至于我們為啥不能用a標簽,這是因為用Vue做的都是單頁應用,就相當于只有一個主的index.html頁面,所以你寫的標簽是不起作用的,你必須使用vue-router來進行管理。

        三、vue-router實現原理

        SPA(single page application):單一頁面應用程序,只有一個完整的頁面;它在加載頁面時,不會加載整個頁面,而是只更新某個指定的容器中內容。 單頁面應用(SPA)的核心之一是: 更新視圖而不重新請求頁面 ;vue-router在實現單頁面前端路由時,提供了兩種方式:Hash模式和History模式;根據mode參數來決定采用哪一種方式。

        1、Hash模式:

        vue-router 默認 hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,于是當 URL 改變時,頁面不會重新加載。hash(#)是URL 的錨點,代表的是網頁中的一個位置,單單改變#后的部分,瀏覽器只會滾動到相應位置,不會重新加載網頁,也就是說 #是用來指導瀏覽器動作的,對服務器端完全無用,HTTP請求中也不會不包括#;同時每一次改變#后的部分,都會在瀏覽器的訪問歷史中增加一個記錄,使用”后退”按鈕,就可以回到上一個位置;所以說 Hash模式通過錨點值的改變,根據不同的值,渲染指定DOM位置的不同數據

        2、History模式:

        由于hash模式會在url中自帶#,如果不想要很丑的 hash,我們可以用路由的 history 模式,只需要在配置路由規則時,加入"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 匹配不到任何靜態資源,則應該返回同一個 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 匹配不到任何靜態資源,就自動跳到到Home頁面

        3、使用路由模塊來實現頁面跳轉的方式

        方式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:創建路由對象并配置路由規則

        let router = new VueRouter({routes:[{path:'/home',component:Home}]});

        5:將其路由對象傳遞給Vue的實例,options中加入 router:router

        6:在app.vue中留坑 <router-view></router-view>

        具體實現請看如下代碼:

        //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); //掛載屬性
        //創建路由對象并配置路由規則
        let router = new VueRouter({
         routes: [
         //一個個對象
         { path: '/home', component: Home }
         ]
        });
        //new Vue 啟動
        new Vue({
         el: '#app',
         //讓vue知道我們的路由規則
         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>
         <h2>{{ msg }}</h2>
         <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.單頁面多路由區域操作

        在一個頁面里我們有2個以上 <router-view> 區域,我們通過配置路由的js文件,來操作這些區域的內容

        ①App.vue文件,在 <router-view> 下面新寫了兩行 <router-view> 標簽,并加入了些CSS樣式

        <template>
         <div id="app">
         <img src="./assets/logo.png">
         <router-link :to="{name:'HelloWorld'}"><h1>H1</h1></router-link>
         <router-link :to="{name:'H1'}"><h1>H2</h1></router-link>
         <router-view></router-view>
         <router-view name="left" style="float:left;width:50%;background-color:#ccc;height:300px;"/>
         <router-view name="right" style="float:right;width:50%;background-color:yellowgreen;height:300px;"/>
         </div>
        </template>

        ②需要在路由里配置這三個區域,配置主要是在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: '/h1',
         name: 'H1',
         components: {default: HelloWorld,
         left:H2,//顯示H2組件內容
         right:H1//顯示H1組件內容
         }
         }
         ]
         })

        上邊的代碼我們編寫了兩個路徑,一個是默認的‘/',另一個是‘/Hi'.在兩個路徑下的components里面,我們對三個區域都定義了顯示內容。最后頁面展示如下圖:

         

        3.vue-router配置子路由(二級路由)

        實際生活中的應用界面,通常由多層嵌套的組件組合而成。同樣地,URL中各段動態路徑也按某種結構對應嵌套的各層組件,例如:

         

        如何實現下圖效果(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">
         <h1>{{ msg }}</h1>
         <router-view></router-view>
         </div>
        </template>

        ③在components目錄下新建兩個組件模板 H1.vue 和 H2.vue 兩者內容類似,以下是H1.vue頁面內容:

        <template>
         <div class="hello">
         <h1>{{ msg }}</h1>
         </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: '/h1', name: 'H1', component: H1},
         {path: '/h2', 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>
         <h2>{{ msg }}</h2>
         </div>
        </template>
        <script>
        export default {
         data () {
         return {
         msg: 'Error:404'
         }
         }
        }
        </script>

        此時我們隨意輸入一個錯誤的地址時,便會自動跳轉到404頁面

        總結

        以上所述是小編給大家介紹的關于vue-router的那些事兒,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

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

        文檔

        關于vue-router的那些事兒

        關于vue-router的那些事兒:一、引子 要學習vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題 二、vue-router是什么 這里的路由并不是指我們平時所說的硬件路由
        推薦度:
        標簽: VUE 那些事 router
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲产国偷V产偷V自拍色戒| 亚洲精品视频免费观看| 91亚洲va在线天线va天堂va国产 | 久久亚洲国产精品五月天婷| 精品免费AV一区二区三区| 日韩a在线观看免费观看| 国产亚洲视频在线观看网址| 亚洲AV成人潮喷综合网| 久久久久久噜噜精品免费直播 | 99久久99久久免费精品小说| 久久久亚洲欧洲日产国码aⅴ | 老司机福利在线免费观看| 免费成人黄色大片| 二个人看的www免费视频| 欧洲亚洲国产清在高| 99久久免费看国产精品| 亚洲欧洲另类春色校园网站| 日本不卡视频免费| 一区二区免费在线观看| 亚洲av无码乱码国产精品| 成年人视频免费在线观看| 亚洲精品国产av成拍色拍| 亚洲Av无码乱码在线znlu| 久久久久久久久久久免费精品| 久久久久久亚洲精品中文字幕| 中文字幕无码免费久久99| 国产精品亚洲а∨无码播放麻豆 | 亚洲区小说区图片区| 最近中文字幕无免费| 色婷婷六月亚洲综合香蕉| 亚洲第一极品精品无码久久| 114一级毛片免费| 羞羞漫画登录页面免费| 亚洲成色WWW久久网站| 最近2019中文免费字幕| 久久精品成人免费国产片小草| 亚洲神级电影国语版| 亚洲国产精品专区在线观看| 99视频精品全部免费观看| 免费VA在线观看无码| 国产一区在线观看免费|