欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解Vue-cli4路由配置

 更新時間:2021年06月21日 10:21:43   作者:白瑕  
Vue-router是Vue官方的路由插件,本文將結合實例代碼,介紹Vue-cli4路由配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言-vue路由

Vue-router是Vue官方的路由插件,與Vue.js深度集成.
在使用了vue-router的單頁面應用中,url的改變會引起組件的切換,從而達到頁面切換的效果,所以如何讓URL按照我們的意愿去改變和URL改變后頁面去向何處是配置vue-router的兩大問題.

[SPA網(wǎng)頁]前端渲染使得單頁面富應用的SPA頁面得以實現(xiàn),整個網(wǎng)頁只有一個HTML頁面,靜態(tài)資源服務器里只有一套HTML & CSS,甚至只有一套JS.

[富應用] 得以實現(xiàn)依賴于發(fā)送至服務端的一個新的請求URL從服務器中獲取到資源后,前端路由會負責分配資源給頁面的相應組件;

[單頁面] 的實現(xiàn)需要url在前端改變,前端路由出現(xiàn)后,前端路由會根據(jù)router的監(jiān)聽,從映射關系里找到需要改變的部分,抽取分配新的資源,并僅僅重新渲染需要改變的部分;

一、最基本路由配置

首先得安裝vue-router,怎么裝就不說了…
在我們安裝vue-router成功后,項目文件的src內會出現(xiàn)一個"router"文件夾,這個文件夾內會有一個index.js,對router的配置就主要在這里完成了.

在這里插入圖片描述

打開它,然后在 routes 數(shù)組中進行配置,一個頁面的路由在這個數(shù)組里被集合為一個對象,其內部包括path和component等屬性,對應著URL怎么樣改變會做出怎樣的反應;

1.配置router/index.js

//這是在router/index.js,全部;
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'

const routes = [
   //在此處配置路由;
]
//在router4中使用createRouter替代了new VueRouter;
const router = createRouter({ 
  history: createWebHistory(process.env.BASE_URL),
  routes
  //在此處引入所有頁面的路由配置數(shù)組routes;
})

export default router   
//導出包含著所有路由配置的router對象,
//在main.js中注入后供全局使用;

component屬性:值為一個頁面,這個頁面控件需要提前引入.

path屬性:規(guī)定URL內出現(xiàn)什么時跳轉到component屬性對應的頁面.

//這是在router/index.js,末尾部分略去;
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import News from '../views/News.vue'
//引入3個頁面控件;
const routes = [
    {
        path: '/',  /* 規(guī)定初始URL對應的頁面 */
        name: 'Home',
        component: Home   /* 規(guī)定默認在Home頁面 */
   },
   {
        path: '/about',/* 規(guī)定URL新增段為/about時跳轉 */
        name: 'About',
        component: About  /* 跳轉至About */
   },
   {
        path: '/news', /* 規(guī)定URL新增段為/news時跳轉 */
        name: "News",
        component: News  /* 跳轉至News */
   },
]

2.配置App.vue

前面規(guī)定好了url改變?yōu)椴煌址麜r會怎樣進行跳轉,現(xiàn)在得想想怎么才能讓URL改變了,以我們的方式改變.
因為只有App.vue會被render渲染,大家一開始看到的和僅僅能操作的都只有App.vue,所以我們對URL改變方式的規(guī)定只能在這里進行.

認識兩種新的標簽,他們已經(jīng)在全局被注冊過了.

  <router-link to="要在URL上添加的字符">XXX</router-link>
  //<router-link>會被渲染成為<a>;
  <router-view />
  //這倆需要組合使用;

App.vue里所有的頁面跳轉都由< router-link>通過改變URL進行驅動.

< router-view>是一個占位標簽,它規(guī)定了router-link標簽需要顯示在什么位置
,總之你刪了它,router-link就顯示不了了(那都不重要,我們先說路由吧…).

<!-- 這是在App.vue中 -->
<template>
  <div id="nav">
  <!-- to屬性規(guī)定如何改變URL; -->
  <!-- Tag屬性規(guī)定router-link標簽需要被渲染成什么HTML元素; -->
    <router-link to="/" Tag="a">Home頁面</router-link> |
    <router-link to="/about" Tag="a">About頁面</router-link> |
    <router-link to="/news" Tag="a">News頁面</router-link> |
    <router-link to="/login" Tag="a">Login</router-link>
  </div>
  <router-view />
</template>

然后你就可以npm run serve跑起你的項目來看看了;

在這里插入圖片描述

可以看到依據(jù)Tag屬性的規(guī)定是多了4個a標簽的,我們點進去News看下,

在這里插入圖片描述

URL依據(jù)router-link的to屬性的值改變了,頁面正確的跳轉.
到此基本的路由配置就完成了.

二、路由懶加載技術

把不同的路由對應的組件分離,僅當某路由被觸發(fā)時才會加載對應組件,會更加高效,并且第三方 & 底層支撐 & 公共App 除外, 其他的Vue頁面組件都在服務器,隨用隨請求,確保對頁面的影響最小.

其實就是改變一下router/index.js里對各個組件的引入方法啦…
通過箭頭函數(shù)的方法進行.

const routes = [
  {
    path: '/about',
    name: 'About',
    component: () => import('../views/About.vue')
    //直接在這里引入了About并且賦值給了component;
  },
  {
    path: '/news',
    name: "News",
    component: () => import("../views/News.vue")
        //直接在這里引入了About并且賦值給了component;
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login.vue')
        //直接在這里引入了About并且賦值給了component;
  },
]

三、路由嵌套

我們的子頁面不能沒有鏈接吧? 用戶通過App.vue進入了一個子頁面,還應該有下屬的鏈接將他們引導到其他頁面,這需要路由嵌套技術.

說簡單些,就是在父頁面的路由里規(guī)定子頁面的路由,比如在News.vue的路由里規(guī)定NewsChild-1.vue的路由.

//這是縮減過的router/index.js;
const routes = [
  {
    path: '/news',
    name: "News",
    component: () => import("../views/News.vue"),
    children: [
      {
        path: 'NewsChild-1', 
        //子路由不用在前面寫"/"和上一層路徑,
        //但其實解析是是會加上的;
        //規(guī)定URL出現(xiàn)/News/NewsChild-1時,
        //跳轉至component對應的頁面;
        component: () => import("../views/NewsChild-1"),
      }
    ]
  },
]

這樣就規(guī)定了在News頁面出現(xiàn)URL改變后應當進行的操作.
自然,我們還得規(guī)定News頁面下要怎樣改變URL,進入News.vue進行操作.

<!-- 這是News.vue; -->
<template>
  <h1>News</h1>
  //規(guī)定在被觸發(fā)時URL增加/News/NewsChild-1;
  <router-link to="/News/NewsChild-1">NewsChild-1</router-link>
  <router-view></router-view>
</template>

然后來看下渲染出的頁面吧:

在這里插入圖片描述

點擊鏈接NewsChild-1:

在這里插入圖片描述

URL變?yōu)?News/NewsChild-1,依據(jù)router-link的to屬性值.
大可再在children數(shù)組里多嵌套幾個頁面組件,如法炮制即可.

四、動態(tài)路由

很多時候頁面需要跳轉到哪里是不能由我們寫程序的來確定的,這就需要程序按照需求去自己決定,讓路由得以動態(tài)改變.

1.動態(tài)路由配置

說簡單些,我們不把[to需要增加的URL]和[path判定跳轉的URL]寫死就好了,把URL里需要經(jīng)常變化的部分,利用v-bind與export default中的data數(shù)據(jù)互通起來,讓URL跟隨數(shù)據(jù)變動.

//這是在router/index.js
import { createRouter, createWebHashHistory } from 'vue-router';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('../views/Home.vue'),
  },
  {
  //我們在此處也不要把path的值寫死;
    path: '/user/:userId',
    name: 'User',
    component: () => import('../views/User.vue'),
  }
];
<!-- 這是在App.vue里 -->
<template>
  <div id="app">
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link> |
    <!-- 在此處使用v-bind將userId數(shù)據(jù)調用; -->
    <!-- 將/user/作為字符串拼接給userId -->
    <router-link v-bind:to="'/user/' + userId">用戶</router-link>
  </div>
  <router-view />
</template>
<script>
export default {
  name: "app",
  data() {
    return {
    //在此處設定userId的數(shù)據(jù)為baixia;
      userId: "baixia",
    };
  },
};
</script>

來看下效果:

在這里插入圖片描述

接下來點擊用戶:

在這里插入圖片描述

URL成功拼接了了data里的數(shù)據(jù)UserId,即baixia.

2.動態(tài)路由傳參

動態(tài)路由也是Vue傳遞數(shù)據(jù)的方式之一,利用$route來進行Vue頁面組件(即vue文件)間的通信.
先來認識兩個變量:
$router: index.js末尾利用createRouter創(chuàng)建的路由對象
$route: 當前正處于活躍狀態(tài)下的路由對象,其中有一個params屬性,全稱parameters,利用它,可以取到我們URL里使用v-bind傳的值.

比如User.vue需要獲取App.vue的data中的userId數(shù)據(jù):

<!-- 在App.vue中(發(fā)方) -->
<template>
  <div id="app">
    <router-link v-bind:to="'/user/' + userId">用戶</router-link>
  </div>
  <router-view />
</template>
<script>
export default {
  name: "app",
  data() {
    return {
      userId: "baixia",
    };
  },
};
</script>
//在user.vue中(收方)
export default {
    name:"user",
    computed: {
        userId() {
            return this.$router.params.userId
//將this.$router.param.userId的值,
//即App.vue的router-link里傳入的userId返回,
//以作為計算屬性userID()的值
        }
    }
}

User.vue里為了獲取用戶信息而使用的params,其獲取哪個屬性依賴于index.js里的path,的如果path:'/user/:abc',那么User.vue的< script>里應當為:

export default {
    name:"user",
        computed: {
            userId() {
            //這里也應為獲取abc屬性;
                return this.$router.params.abc
           }
        }
}

總結

昨天拿到通知,說咱HTML5設計大賽拿了一等獎…
就挺離譜的,做的算是中規(guī)中矩吧個人感覺.這幾天要趕趕Vue的進度了.

到此這篇關于深入理解Vue-cli4路由配置的文章就介紹到這了,更多相關Vue-cli4路由配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue中使用[provide/inject]實現(xiàn)頁面reload的方法

    vue中使用[provide/inject]實現(xiàn)頁面reload的方法

    這篇文章主要介紹了在vue中使用[provide/inject]實現(xiàn)頁面reload的方法,文中給大家提到了在vue中實現(xiàn)頁面刷新不同的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • vue3組件化開發(fā)之可復用性的應用實例詳解

    vue3組件化開發(fā)之可復用性的應用實例詳解

    不斷把公共的、可以獨立拆分出來的抽出來作為一個獨立可復用的組件來向上提供調用,這樣讓我們的代碼更加方便組織和管理,并且擴展性也更強,下面這篇文章主要給大家介紹了關于vue3組件化開發(fā)之可復用性應用的相關資料,需要的朋友可以參考下
    2022-06-06
  • 詳解從vue的組件傳值著手觀察者模式

    詳解從vue的組件傳值著手觀察者模式

    本文詳細介紹了從vue的組件傳值著手觀察者模式,感興趣的同學,可以參考下,理解其原理。
    2021-06-06
  • vue中實現(xiàn)頁面刷新以及局部刷新的方法

    vue中實現(xiàn)頁面刷新以及局部刷新的方法

    這篇文章主要給大家介紹了關于vue中實現(xiàn)頁面刷新以及局部刷新的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • vue3組合式api創(chuàng)建單文件組件的寫法

    vue3組合式api創(chuàng)建單文件組件的寫法

    Vue3?中的?Composition?API?是一種新的編寫組件邏輯的方式,它提供了更好的代碼組織、類型推導、測試支持和復用性,本文為大家介紹了vue3利用組合式api創(chuàng)建單文件組件的方法,感興趣的可以了解下
    2023-08-08
  • vue.js?Table?組件自定義列寬實現(xiàn)核心方法

    vue.js?Table?組件自定義列寬實現(xiàn)核心方法

    這篇文章主要介紹了vue.js?Table?組件自定義列寬實現(xiàn)核心方法,文圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • vue.js中引入vuex儲存接口數(shù)據(jù)及調用的詳細流程

    vue.js中引入vuex儲存接口數(shù)據(jù)及調用的詳細流程

    這篇文章主要給大家介紹了關于在vue.js中引入vuex儲存接口數(shù)據(jù)及調用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • vuedraggable實現(xiàn)拖拽功能

    vuedraggable實現(xiàn)拖拽功能

    這篇文章主要為大家詳細介紹了vuedraggable實現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 淺談vue項目4rs vue-router上線后history模式遇到的坑

    淺談vue項目4rs vue-router上線后history模式遇到的坑

    今天小編就為大家分享一篇淺談vue項目4rs vue-router上線后history模式遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Vue中使用插槽(slot)、聚類插槽

    詳解Vue中使用插槽(slot)、聚類插槽

    這篇文章主要介紹了Vue中使用插槽(slot)、聚類插槽,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論