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

Vue.js實(shí)戰(zhàn)之利用vue-router實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面

 更新時(shí)間:2017年04月01日 11:55:59   作者:WiseWrong  
對(duì)于單頁(yè)應(yīng)用,官方提供了vue-router進(jìn)行路由跳轉(zhuǎn)的處理,這篇文章主要給大家介紹了Vue.js實(shí)戰(zhàn)之利用vue-router實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

使用 Vue.js 做項(xiàng)目的時(shí)候,一個(gè)頁(yè)面是由多個(gè)組件構(gòu)成的,所以在跳轉(zhuǎn)頁(yè)面的時(shí)候,并不適合用傳統(tǒng)的 href,于是 vue-router 應(yīng)運(yùn)而生。

官方文檔: https://router.vuejs.org/zh-cn/essentials/getting-started.html

這次的實(shí)例主要實(shí)現(xiàn)下圖的效果:

項(xiàng)目結(jié)構(gòu):

一、配置 Router

用 vue-cli 創(chuàng)建的初始模板里面,并沒(méi)有 vue-router,需要通過(guò) npm 安裝

cnpm i vue-router -D

安裝完成后,在 src 文件夾下,創(chuàng)建一個(gè) routers.js 文件,和 main.js 平級(jí)

然后在 router.js 中引入所需的組件,創(chuàng)建 routers 對(duì)象

import Home from './components/home.vue'

const routers = [
 {
 path: '/home',
 name: 'home',
 component: Home
 },
 {
 path: '/',
 component: Home
 },
]
export default routers

在創(chuàng)建的 routers 對(duì)象中, path 配置了路由的路徑,component 配置了映射的組件

需要注意的是:export default routers 必須寫(xiě)在文件底部,而且后面還需要接一空行,否則無(wú)法通過(guò) ESlint 語(yǔ)法驗(yàn)證

然后 main.js 也需要修改:

import Vue from 'vue'
import VueRouter from 'vue-router'
import routers from './routers'
import App from './App'

Vue.use(VueRouter)

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

new Vue({
 el: '#app',
 router,
 render: h => h(App)
})

在創(chuàng)建的 router 對(duì)象中,如果不配置 mode,就會(huì)使用默認(rèn)的 hash 模式,該模式下會(huì)將路徑格式化為 #! 開(kāi)頭。

添加 mode: 'history' 之后將使用 HTML5 history 模式,該模式下沒(méi)有 # 前綴,而且可以使用 pushState 和 replaceState 來(lái)管理記錄。

關(guān)于 HTML5 history 模式的更多內(nèi)容,可以參考官方文檔:https://router.vuejs.org/zh-cn/essentials/history-mode.html

二、嵌套路由

在這個(gè)實(shí)例中,為了加深項(xiàng)目層級(jí),App.vue 只是作為一個(gè)存放組件的容器:

其中 <router-view> 是用來(lái)渲染通過(guò)路由映射過(guò)來(lái)的組件,當(dāng)路徑更改時(shí), <router-view> 中的內(nèi)容也會(huì)發(fā)生更改

上面已經(jīng)配置了兩個(gè)路由,當(dāng)打開(kāi) http://localhost:8080 或者 http://localhost:8080/home 的時(shí)候,就會(huì)在 <router-view> 中渲染 home.vue 組件

home.vue 是真正的父組件,first.vue、login.vue 等子組件都會(huì)渲染到 home.vue 中的 <router-view>

 

如此一來(lái),就需要在一級(jí)路由中嵌套二級(jí)路由,修改 routers.js

import Home from './components/home.vue'
import First from './components/children/first.vue'
import Login from './components/children/login.vue'

const routers = [
 {
 path: '/',
 component: Home,
   children: [ 
   { 
    path: '/', 
     component: Login 
   }
  ]
 },
 {
 path: '/home',
 name: 'home',
 component: Home,
 children: [
  {
  path: '/',
  name: 'login',
  component: Login
  },
  {
  path: 'first',
  name: 'first',
  component: First
  } 
 ]
 }
]

export default routers

在配置的路由后面,添加 children,并在 children 中添加二級(jí)路由,就能實(shí)現(xiàn)路由嵌套

配置 path 的時(shí)候,以 " / " 開(kāi)頭的嵌套路徑會(huì)被當(dāng)作根路徑,所以子路由的 path 不需要添加 " / "

三、使用 <router-link> 映射路由

home.vue 中引入了 header.vue 組件,其中含有導(dǎo)航菜單

當(dāng)點(diǎn)擊導(dǎo)航菜單的時(shí)候,會(huì)切換 home.vue 中 <router-view> 中的內(nèi)容

這種只需要跳轉(zhuǎn)頁(yè)面,不需要添加驗(yàn)證方法的情況,可以使用 <router-link> 來(lái)實(shí)現(xiàn)導(dǎo)航的功能:

在編譯之后, <router-link> 會(huì)被渲染為 <a> 標(biāo)簽, to 會(huì)被渲染為 href,當(dāng) <router-link> 被點(diǎn)擊的時(shí)候,url 會(huì)發(fā)生相應(yīng)的改變

如果使用 v-bind 指令,還可以在 to 后面接變量,配合 v-for 指令可以渲染導(dǎo)航菜單

如果對(duì)于所有 ID 各不相同的用戶,都要使用 home 組件來(lái)渲染,可以在 routers.js 中添加動(dòng)態(tài)參數(shù):

{ 
 path: '/home/:id',
 component: Home
}

這樣 "/home/user01"、"/home/user02"、"/home/user03" 等路由,都會(huì)映射到 Home 組件

然后還可以使用 $route.params.id 來(lái)獲取到對(duì)應(yīng)的 id

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

實(shí)際情況下,有很多按鈕在執(zhí)行跳轉(zhuǎn)之前,還會(huì)執(zhí)行一系列方法,這時(shí)可以使用 this.$router.push(location) 來(lái)修改 url,完成跳轉(zhuǎn)

 

push 后面可以是對(duì)象,也可以是字符串:

// 字符串
this.$router.push('/home/first')

// 對(duì)象
this.$router.push({ path: '/home/first' })

// 命名的路由
this.$router.push({ name: 'home', params: { userId: wise }})

五、前車(chē)之鑒

在學(xué)習(xí)的過(guò)程中,遇到一個(gè)困擾許久的問(wèn)題,大概是從 first 組件跳轉(zhuǎn)回 login 之后,無(wú)法再跳轉(zhuǎn)回去。但是 url 已經(jīng)被修改,刷新頁(yè)面也能正常顯示。

這是因?yàn)槲以?first.vue 組件中的 data 里面沒(méi)有寫(xiě) return

 

在 vue 組件中,data 必須寫(xiě)為函數(shù),且需要用 return 來(lái)返回參數(shù)。但是當(dāng) data 為空時(shí),即使不寫(xiě) return 也不會(huì)報(bào)錯(cuò),所以導(dǎo)致了上面的問(wèn)題。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Vue拖動(dòng)截圖功能的簡(jiǎn)單實(shí)現(xiàn)方法

    Vue拖動(dòng)截圖功能的簡(jiǎn)單實(shí)現(xiàn)方法

    最近項(xiàng)目上要做一個(gè)車(chē)牌識(shí)別的功能,就需要做拖動(dòng)截圖功能了,因?yàn)榍岸问莢ue,所以下面這篇文章主要給大家介紹了關(guān)于Vue拖動(dòng)截圖功能的簡(jiǎn)單實(shí)現(xiàn)方法,需要的朋友可以參考下
    2021-07-07
  • uni-app 使用編輯器創(chuàng)建vue3 項(xiàng)目并且運(yùn)行的操作方法

    uni-app 使用編輯器創(chuàng)建vue3 項(xiàng)目并且運(yùn)行的操作方法

    這篇文章主要介紹了uni-app 使用編輯器創(chuàng)建vue3 項(xiàng)目并且運(yùn)行的操作方法,目前uniapp 創(chuàng)建的vue3支持 vue3.0 -- 3.2版本 也就是說(shuō)setup語(yǔ)法糖也是支持的,需要的朋友可以參考下
    2023-01-01
  • vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    彈窗是我們開(kāi)發(fā)中經(jīng)常遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • vue使用transition組件動(dòng)畫(huà)效果的實(shí)例代碼

    vue使用transition組件動(dòng)畫(huà)效果的實(shí)例代碼

    這篇文章主要介紹了vue使用transition組件動(dòng)畫(huà)效果的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • VUE實(shí)時(shí)監(jiān)聽(tīng)元素距離頂部高度的操作

    VUE實(shí)時(shí)監(jiān)聽(tīng)元素距離頂部高度的操作

    這篇文章主要介紹了VUE實(shí)時(shí)監(jiān)聽(tīng)元素距離頂部高度的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 詳解Vue中的基本語(yǔ)法和常用指令

    詳解Vue中的基本語(yǔ)法和常用指令

    Vue.js 是一套構(gòu)建用戶界面的框架,**只關(guān)注視圖層**,它不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。這篇文章主要介紹了vue 的基本語(yǔ)法和常用指令,需要的朋友可以參考下
    2019-07-07
  • 手寫(xiě)?Vue3?響應(yīng)式系統(tǒng)(核心就一個(gè)數(shù)據(jù)結(jié)構(gòu))

    手寫(xiě)?Vue3?響應(yīng)式系統(tǒng)(核心就一個(gè)數(shù)據(jù)結(jié)構(gòu))

    這篇文章主要介紹了手寫(xiě)?Vue3?響應(yīng)式系統(tǒng)(核心就一個(gè)數(shù)據(jù)結(jié)構(gòu)),響應(yīng)式就是被觀察的數(shù)據(jù)變化的時(shí)候做一系列聯(lián)動(dòng)處理。就像一個(gè)社會(huì)熱點(diǎn)事件,當(dāng)它有消息更新的時(shí)候,各方媒體都會(huì)跟進(jìn)做相關(guān)報(bào)道。這里社會(huì)熱點(diǎn)事件就是被觀察的目標(biāo)
    2022-06-06
  • Vue中的event對(duì)象介紹

    Vue中的event對(duì)象介紹

    這篇文章介紹了Vue中的event對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • vue3如何實(shí)現(xiàn)單點(diǎn)登錄

    vue3如何實(shí)現(xiàn)單點(diǎn)登錄

    這篇文章主要介紹了vue3如何實(shí)現(xiàn)單點(diǎn)登錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vuex 多模塊時(shí) 模塊內(nèi)部的mutation和action的調(diào)用方式

    vuex 多模塊時(shí) 模塊內(nèi)部的mutation和action的調(diào)用方式

    這篇文章主要介紹了vuex 多模塊時(shí) 模塊內(nèi)部的mutation和action的調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論