国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue Router的詳細(xì)解讀之手把手教學(xué)篇(一)

這篇具有很好參考價值的文章主要介紹了Vue Router的詳細(xì)解讀之手把手教學(xué)篇(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ? Vue Router是Vue項目開發(fā)中,重要的一環(huán),在頁面模塊的模塊化,數(shù)據(jù)參數(shù)的傳遞,等方面具有重要的作用,Vue是單頁面應(yīng)用,通過路由控制頁面所展示的內(nèi)容,下面讓我們一起學(xué)習(xí)一下關(guān)于Vue Route的基礎(chǔ)用法,其中包含博主的整理總結(jié)。

一、什么是Vue Router

用 Vue + Vue Router 創(chuàng)建單頁應(yīng)用非常簡單:通過 Vue.js,我們已經(jīng)用組件組成了我們的應(yīng)用。當(dāng)加入 Vue Router 時,我們需要做的就是將我們的組件映射到路由上,讓 Vue Router 知道在哪里渲染它們

二、安裝Vue Router

一般在Vue-cli創(chuàng)建項目時,會進行Router的安裝

npm?

npm install vue-router@4

yarn?

yarn add vue-router@4

在main.js中引入Router,new Vue的時候?qū)outer掛載到Vue的實例上,從而在項目開發(fā)的過程中,我們可以通過Vue.$route去觸發(fā)Router的方法屬性?

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

代碼解析(純純干貨,哈哈哈):首先,new的時候發(fā)生了什么,1.創(chuàng)建一個新對象2.將構(gòu)造函數(shù)的作用域賦值給這個函數(shù),因此this也指向了這個新對象3.執(zhí)行構(gòu)造函數(shù)的代碼,為這個對象添加屬性,4.返回這個對象

new Vue:也是基于Vue創(chuàng)建了一個新的Vue對象,并對用于傳入的配置項和系統(tǒng)配置項進行合并,然后作用域賦值,然后給新對象添加屬性,@方法,生命周期,監(jiān)聽事件,計算屬性等,然后通過.$mount進行頁面掛載,其中,render就是一個渲染函數(shù),而createElement就是創(chuàng)建節(jié)點,App就是一般情況下Vue的html根文件,所以這里實質(zhì)上就是將App這個html頁面進行了渲染,當(dāng)然在App頁面中又有掛載的路由組件,進而可以渲染各種掛載的路由組件,?

三、router-link與router-view

router-link:通過router-link而不使用常規(guī)的a標(biāo)簽,是因為通過router-link來創(chuàng)建連接,可以在不重新加載頁面的情況下更改 URL,處理 URL 的生成以及編碼。

router-view:將顯示與 url 對應(yīng)的組件。你可以把它放在任何地方,以適應(yīng)你的布局。

四、動態(tài)路由匹配

當(dāng)通過Vue cli創(chuàng)建項目的時候,勾選了Vue router 之后會創(chuàng)建router文件夾

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  }
]

const router = new VueRouter({
  routes
})

export default router

下面將基于此文件進行相關(guān)屬性的分析。

1.帶參數(shù)的動態(tài)路由匹配

路徑參數(shù)

{
    path: '/:id',
    name: 'home',
    component: HomeView
  },

路徑參數(shù)?用冒號?:?表示。當(dāng)一個路由被匹配時,它的?params?的值將在每個組件中以?this.$route.params?的形式暴露出來。

這將表示/后面的值,將會作為參數(shù)傳遞給home組件,而不作為路徑進行頁面的跳轉(zhuǎn)。也就表示/a與/b跳轉(zhuǎn)到的都是home組件,不同的是傳遞過來的值不同。

參數(shù)的獲取:通過$route.params.id獲取路由傳遞過來的值

<div>{{ $route.params.id  }}</div>

2.響應(yīng)路由參數(shù)的變化

推薦通過路由守衛(wèi)進行對應(yīng)數(shù)據(jù)的處理

<template>
  <div>{{ id }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: "",
    };
  },
  created() {},
  //路由守衛(wèi)處理數(shù)據(jù)
  beforeRouteEnter(to, from, next) {
    next((vn) => {
      vn.id = to.params.id;
    });
  },
};
</script>

<style>
</style>

3.設(shè)置404頁面

通過*匹配所有未知路由

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'

Vue.use(VueRouter)

const routes = [
  
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  },
  {
		path: "/404",
		component: () => import("@/views/404"),
	},
  { path: "*", redirect: "/404" }
]

const router = new VueRouter({
  mode:"history",
  routes
})

export default router

五、路由的匹配語法

可以通過正則對路由進行匹配。

通過?修飾符將一個參數(shù)標(biāo)記為可選的

下列代碼可以匹配到/about路由

path: '/about/:id?',

?下列代碼無法匹配到/about路由

path: '/about/:id',

六、編程式導(dǎo)航

除了使用 <router-link> 創(chuàng)建 a 標(biāo)簽來定義導(dǎo)航鏈接,我們還可以借助 router 的實例方法,通過編寫代碼來實現(xiàn)。其中router-link是聲明式導(dǎo)航,通過router的實例方法稱為編程式導(dǎo)航。

1.導(dǎo)航到不同的位置

在Vue中可以直接訪問$router實例,所以可以直接調(diào)用實例的方法,實現(xiàn)頁面的跳轉(zhuǎn)。想要導(dǎo)航到不同的 URL,可以使用?router.push?方法。這個方法會向 history 棧添加一個新的記錄,所以,當(dāng)用戶點擊瀏覽器后退按鈕時,會回到之前的 URL。

當(dāng)你點擊router-link時,內(nèi)部會調(diào)用push這個方法。

聲明式 編程式
<router-link :to="..."> router.push(...)

該方法的參數(shù)可以是一個字符串路徑,或者一個描述地址的對象。例如:

// 字符串路徑
router.push('/users/eduardo')

// 帶有路徑的對象
router.push({ path: '/users/eduardo' })

// 命名的路由,并加上參數(shù),讓路由建立 url
router.push({ name: 'user', params: { username: 'eduardo' } })

// 帶查詢參數(shù),結(jié)果是 /register?plan=private
router.push({ path: '/register', query: { plan: 'private' } })

// 帶 hash,結(jié)果是 /about#team
router.push({ path: '/about', hash: '#team' })

需要注意的是:如果提供了?path,params?會被忽略,上述例子中的?query?并不屬于這種情況。

如果想要在提供path的方式上傳遞params,需要提供路由的?name?或手寫完整的帶有參數(shù)的?path:

const username = 'eduardo'
// 我們可以手動建立 url,但我們必須自己處理編碼
router.push(`/user/${username}`) // -> /user/eduardo
// 同樣
router.push({ path: `/user/${username}` }) // -> /user/eduardo
// 如果可能的話,使用 `name` 和 `params` 從自動 URL 編碼中獲益
router.push({ name: 'user', params: { username } }) // -> /user/eduardo
// `params` 不能與 `path` 一起使用
router.push({ path: '/user', params: { username } }) // -> /user

2.替換當(dāng)前位置

它的作用類似于?router.push,唯一不同的是,它在導(dǎo)航時不會向 history 添加新記錄,正如它的名字所暗示的那樣——它取代了當(dāng)前的條目。

聲明式 編程式
<router-link :to="..." replace> router.replace(...)

也可以直接在傳遞給?router.push?的?routeLocation?中增加一個屬性?replace: true?:

router.push({ path: '/home', replace: true })
// 相當(dāng)于
router.replace({ path: '/home' })

?3.橫跨歷史,獨斷萬古

可以通過.go()接收一個數(shù)字,指定前進后退幾層。

為正數(shù)表示前進,負(fù)數(shù)表示后退。

4.路由命名

可以通過name屬性指定路由名稱,通過name屬性進行傳參以及跳轉(zhuǎn)。

5.命名視圖

可以通過多個router-view指定多個組件的展示,通過name標(biāo)志顯示那個組件。

<template>
  <h1>Named Views</h1>
  <ul>
    <li>
      <router-link to="/">First page</router-link>
    </li>
    <li>
      <router-link to="/other">Second page</router-link>
    </li>
  </ul>
  <router-view class="view one"></router-view>
  <router-view class="view two" name="a"></router-view>
  <router-view class="view three" name="b"></router-view>
</template>

<script>
export default {
  name: "App",
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: #2c3e50;
}

.router-link-active {
  color: orange;
}

.router-link-exact-active {
  color: crimson;
}
</style>

<style scoped>
ul {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
}

li:not(:last-of-type) {
  margin-right: 1rem;
}
</style>
import { createRouter, createWebHistory } from 'vue-router'
import First from './views/First.vue'
import Second from './views/Second.vue'
import Third from './views/Third.vue'

export const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      // a single route can define multiple named components
      // which will be rendered into <router-view>s with corresponding names.
      components: {
        default: First,
        a: Second,
        b: Third,
      },
    },
    {
      path: '/other',
      components: {
        default: Third,
        a: Second,
        b: First,
      },
    },
  ],
})

七、路由重定向與別名

通過redirect屬性進行路由重定向

之前在進行404頁面配置的時候,其實已經(jīng)進行過路由的重定向了。

 { 
		path: "/404",
		component: () => import("@/views/404"),
	},
  { path: "*", redirect: "/404" }

通過alias進行路由的別名。

當(dāng)我們訪問別名時的路由時,實際上訪問的仍是當(dāng)前路由。

重定向是指當(dāng)用戶訪問?/home?時,URL 會被?/?替換,然后匹配成?/。那么什么是別名呢?

將?/?別名為?/home,意味著當(dāng)用戶訪問?/home?時,URL 仍然是?/home,但會被匹配為用戶正在訪問?/

上面對應(yīng)的路由配置為:文章來源地址http://www.zghlxwxcb.cn/news/detail-480250.html

const routes = [{ path: '/', component: Homepage, alias: '/home' }]

到了這里,關(guān)于Vue Router的詳細(xì)解讀之手把手教學(xué)篇(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Git 使用教程:最詳細(xì)、最正宗手把手教學(xué)(萬字長文)

    Git 使用教程:最詳細(xì)、最正宗手把手教學(xué)(萬字長文)

    一:Git 二:SVN與Git的的區(qū)別 三、安裝Git 四:常規(guī)操作 五:遠(yuǎn)程倉庫 六:創(chuàng)建與合并分支 七:bug分支 八:多人協(xié)作 九:git可視化工具 Git 是一種分布式版本控制系統(tǒng),用于管理軟件項目的源代碼。它是由 Linux 之父 Linus Torvalds 開發(fā)的,并已經(jīng)成為了現(xiàn)代軟件開發(fā)領(lǐng)域中最流

    2024年02月16日
    瀏覽(57)
  • Linux虛擬機的安裝與創(chuàng)建【超詳細(xì)】【手把手教學(xué)】

    Linux虛擬機的安裝與創(chuàng)建【超詳細(xì)】【手把手教學(xué)】

    Linux操作系統(tǒng)于1991年,由芬蘭的一個研究生 林納斯 ● 托瓦茲(Linus Torvalds)開發(fā),免費開源。 特點: 完全免費:源代碼 多用戶 多任務(wù) 良好的用戶界面 支持多種平臺 設(shè)備獨立性 豐富的網(wǎng)絡(luò)功能 完善的數(shù)據(jù)庫和開發(fā)平臺 安全性 可移植性 你所需要的所有虛擬機文件: 鏈接

    2024年02月08日
    瀏覽(19)
  • Mysql安裝,以及可視化工具SQLyog配置,最詳細(xì)的手把手教學(xué)

    Mysql安裝,以及可視化工具SQLyog配置,最詳細(xì)的手把手教學(xué)

    MySQL :: MySQL Downloads 要是下載頁面卡,可以使用百度網(wǎng)盤分享的mysql Mysql數(shù)據(jù)庫版本:mysql 8.0.34 百度網(wǎng)盤分享: 鏈接:百度網(wǎng)盤 請輸入提取碼 提取碼:free 選擇自定義模式 選擇合適的擴展到右邊 點擊超鏈接 Advanced Options,更改路徑 執(zhí)行即可 端口默認(rèn),加密選擇默認(rèn)推薦 輸入

    2024年02月03日
    瀏覽(52)
  • 本地項目托管到 Gitee 詳細(xì)步驟,手把手教學(xué),就這一篇博客足夠

    本地項目托管到 Gitee 詳細(xì)步驟,手把手教學(xué),就這一篇博客足夠

    gitee官網(wǎng): https://gitee.com/ 首先創(chuàng)建自己的賬戶密碼, 記住賬戶密碼 ,后面上傳的時候可能會用到 【 + 】 = 【 新建倉庫 】 = 【 按下圖填信息 】 = 【 點擊創(chuàng)建 】 4.1 首先 配置用戶名和郵箱 ,用戶名可任意,郵箱必須為可用郵箱 下面兩條命令可以檢查郵箱是否配置成功 注:

    2023年04月08日
    瀏覽(24)
  • Linux、CentOS超詳細(xì)修改ip方法,手把手步驟教學(xué),小白也能學(xué)會

    Linux、CentOS超詳細(xì)修改ip方法,手把手步驟教學(xué),小白也能學(xué)會

    目錄 1.切換root用戶 ? 1.1輸入命令 ? 1.2輸入密碼 ? 1.2成功登錄 ? 1.3登錄失敗 2.使用root修改配置文件 ? 2.1輸入命令 ? 2.2進入編輯模式 ? ?2.2.1修改BOOTPROTO ? ?2.2.2修改ONBOOT ? ?2.2.3修改ip和掩碼等 ? ?2.2.4結(jié)果 ?2.3退出保存 ?2.4查看修改是否成功 ?3.重啟網(wǎng)絡(luò)服務(wù) 4.查看ip是否

    2024年02月07日
    瀏覽(22)
  • 手把手教學(xué)RRT*(RRTSTAR)三維算法MATLAB仿真(代碼可直接運行,視頻手把手教學(xué))

    手把手教學(xué)RRT*(RRTSTAR)三維算法MATLAB仿真(代碼可直接運行,視頻手把手教學(xué))

    ????????在我以前的作品里有關(guān)于RRT算法的視頻和代碼,今天主要講解一下RRT*算法的原理。RRT*算法主要是在RRT算法的基礎(chǔ)上加上了重寫父節(jié)點和隨機重連的兩個步驟。具體的實現(xiàn)方式我想以視頻的方式向大家講解,個人感覺講解的十分詳細(xì)。視頻連接在這里,希望大家看

    2024年04月17日
    瀏覽(160)
  • tps5430手把手教學(xué)

    tps5430手把手教學(xué)

    TPS5430手把手教學(xué) 目錄 一、buck電路原理 二、tps5430芯片介紹 1.1芯片引腳圖 1.2芯片引腳說明 三、tps5430參考電路講解以及PCB布局 1.正壓降壓(15V轉(zhuǎn)12V) 1.1原理圖 1.2器件選擇 1.3PCB布局 2.正壓降負(fù)壓 2.1原理圖 2.2PCB布局 2.3注意事項 BUCK電路原理: BUCK電路,又稱降壓式變換電路,

    2023年04月20日
    瀏覽(22)
  • Fabric 超級賬本學(xué)習(xí)【2】Fabric2.4網(wǎng)絡(luò)環(huán)境下部署自己編寫的go語言鏈碼并實例化測試(手把手教學(xué),步驟超詳細(xì))

    Fabric 超級賬本學(xué)習(xí)【2】Fabric2.4網(wǎng)絡(luò)環(huán)境下部署自己編寫的go語言鏈碼并實例化測試(手把手教學(xué),步驟超詳細(xì))

    搭建部署 Fabric2.4網(wǎng)絡(luò)的具體教程可見我寫的這篇博客: Fabric 超級賬本學(xué)習(xí)【4】Ububtu環(huán)境下部署搭建 Hyperledger Fabric2.4 (2.X)區(qū)塊鏈網(wǎng)絡(luò) 1、前提是搭建好了Fabric 2.4(Fabric2.x)版本的區(qū)塊鏈網(wǎng)絡(luò),并在以此環(huán)境下部署自己編寫的鏈碼,如下圖先進入 test-network 文件夾目錄下 2、

    2023年04月16日
    瀏覽(24)
  • ChatGPT推廣指南,手把手教學(xué)

    ChatGPT推廣指南,手把手教學(xué)

    網(wǎng)站登錄流程我就不給大家贅述了,直接進入主題,全程干貨仔細(xì)看 1.個人中心。點擊右上角——“頭像”——點擊“個人中心” 2.推廣鏈接。點擊左側(cè)菜單欄——“推廣鏈接”,三條默認(rèn)推廣鏈接就是您的推廣鏈接,將您的專屬推廣鏈接分享給需要的人即可。 3.好友列表。

    2023年04月12日
    瀏覽(26)
  • Git入門指南(手把手教學(xué))

    Git入門指南(手把手教學(xué))

    Git是一種分布式版本控制系統(tǒng),它是由Linus Torvalds為了管理Linux內(nèi)核開發(fā)而開發(fā)的。與中心化的版本控制系統(tǒng)(如SVN)不同,Git是一種分布式系統(tǒng),它將代碼庫(repository)復(fù)制到多個開發(fā)者的本地計算機上,每個開發(fā)者都有自己的代碼庫,可以在本地提交代碼、管理分支、合

    2023年04月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包