vue實(shí)現(xiàn)四級(jí)導(dǎo)航及驗(yàn)證碼的方法實(shí)例
實(shí)現(xiàn)效果:

首先創(chuàng)建五個(gè)vue界面
1.home.vue頁(yè)面
<template>
<div id="home-wrapper">
<h1>{{ name }}</h1>
<nav>
<!-- 二級(jí)路由的出口 在一級(jí)路由的界面里面 -->
<router-link to="/one">one</router-link>
<router-link :to="{ name: 'Two' }">two</router-link>
<router-link :to="threeObj">three</router-link>
<!-- 編程式 導(dǎo)航/路由 -->
<button @click="fourBtn">four</button>
</nav>
<router-view></router-view>
</div>
</template>
<script>
export default {
data() {
return {
name: "首頁(yè)",
threeObj: {
name: "Three",
},
};
},
methods: {
fourBtn() {
var userId = 6789;
this.$router.push({
path: `four/${userId}`,
});
},
},
};
</script>
<style lang="less" scoped>
#home-wrapper{
nav{
display: flex;
a{
flex: 1;
background-color: antiquewhite;
height: 50px;
line-height: 50px;
}
}
}
</style>
2.one.vue界面
<template>
<div>
<h1>{{name}}</h1>
<ul>
<li>
<router-link to="/levl31">web</router-link>
</li>
<li>
<router-link :to="{name:'name32'}">后端</router-link>
</li>
<li>
<!-- 使用命名路由 在多級(jí)路由里面 比較方便 -->
<router-link :to="{name:'name33'}">AI</router-link>
</li>
<li>
<router-link to="/one/levl34">UI</router-link>
</li>
<li>
<router-link :to="{name:'name35'}">三級(jí)路由-4</router-link>
</li>
</ul>
<!-- 三級(jí)路由 出門在二級(jí)路由的界面 -->
<router-view></router-view>
</div>
</template>
<script>
export default {
name:'One',
data() {
return {
name: "第一頁(yè)"
}
},
}
</script>
<style lang="less" scoped>
ul{
list-style: none;
display: flex;
width: 100%;
margin-left: -40px;
}
li{
flex: 1;
background-color: orange;
height: 50px;
line-height: 50px;
}
</style>
3.two.vue頁(yè)面以及驗(yàn)證碼實(shí)現(xiàn)
實(shí)現(xiàn)效果圖:

<template>
<div>
<h1>{{ name }}</h1>
<button @click="changeCode">驗(yàn)證碼</button>
<img :src="imgCodeUrl" alt="">
</div>
</template>
<script>
export default {
// 組件的別名 在vue調(diào)試的時(shí)候方便查看
name: "Two_zh",
data() {
return {
name: "第二頁(yè)",
imgCodeUrl:""
};
},
methods: {
// 獲取驗(yàn)證碼
changeCode() {
// /api 是在vue.config.js 里面代理配置
const url = "api/v1/captchas";
// const url = "https://elm.cangdu.org/v1/captchas";
this.axios
.post(url, {})
.then((res) => {
this.imgCodeUrl =res.data.code
console.log("驗(yàn)證碼接口:",res);
})
.catch((e) => {
console.log("錯(cuò)誤:", e);
});
},
},
};
</script>
<style lang="less" scoped>
</style>
4. three.vue頁(yè)面
<template>
<div>
<h1>{{name}}</h1>
</div>
</template>
<script>
export default {
name:'three',
data() {
return {
name: "第三頁(yè)"
}
},
}
</script>
<style lang="less" scoped>
</style>
5.four.vue頁(yè)面
<template>
<div>
<h1>{{name}}</h1>
</div>
</template>
<script>
export default {
name:'Four',
data() {
return {
name: "第四頁(yè)"
}
},
created() {
console.log("第四頁(yè) created:",this.$route)
},
}
</script>
<style lang="less" scoped>
</style>
然后配置路由:
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home2 from '@/views/day/home.vue'
Vue.use(VueRouter)
const routes = [
{
path: "/",
name: 'home2',
component: Home2,
redirect: "/one",
children: [
{
path: "/one",
name: 'One',
component: () => import("@/views/day/one.vue"),
children: [
{
path: '/levl31',
// h creacteElemet 的意思 創(chuàng)建 虛擬Dom/標(biāo)簽 Vnode
// 第一個(gè)參數(shù)是 標(biāo)簽名 擴(kuò)展的話 自己的寫(xiě)的組件 也是標(biāo)簽名
// 第二個(gè)參數(shù)是 可選的 標(biāo)簽的屬性配置
// 第三個(gè)參數(shù)是 標(biāo)簽的內(nèi)容
component: {
render(h) {
return h("h1", "前端")
}
},
},
{
// /默認(rèn)代表根目錄 #/levl31
// 不帶斜杠 會(huì)自己拼接 #/one/levl32
// 使用的時(shí)候統(tǒng)一用命名路由
path: "levl32",
name: "name32",
component: {
render(h) {
return h("h1", "后端")
}
},
},
{
path:"/one?levl33",
name:"name33",
component:{
render(h) {
return h("h1", "人工智能")
}
}
},
{
path:"/one/levl34",
name:"name34",
component:{
render(h) {
return h("h1","就是個(gè)美工嗎")
}
}
},
// 三 四級(jí)路由
{
path:"level35",
name:"name35",
component:()=>import("@/views/Home.vue"),
// 四級(jí)路由
children:[
{
path:"boy",
name:"Boy",
component:()=>import("@/views/boy.vue")
},
{
path:"girl",
name:"Girl",
component:()=>import("@/views/girl.vue")
}
]
}
]
},
{
path: "/two",
name: 'Two',
component: () => import("@/views/day/two.vue")
},
{
path: "/three",
name: 'Three',
component: () => import("@/views/day/three.vue")
},
{
// 可選參數(shù) \d 數(shù)字 字符串就匹配不上
path: "four/:id(\\d*)?",
name: 'Four',
component: () => import("@/views/day/four.vue")
},
]
}
]
const router = new VueRouter({
routes
})
export default router
總結(jié)
到此這篇關(guān)于vue實(shí)現(xiàn)四級(jí)導(dǎo)航及驗(yàn)證碼的文章就介紹到這了,更多相關(guān)vue四級(jí)導(dǎo)航及驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)
- vue實(shí)現(xiàn)nav導(dǎo)航欄的方法
- vue2.0實(shí)現(xiàn)導(dǎo)航菜單切換效果
- Vue實(shí)現(xiàn)導(dǎo)航欄菜單
- 非常實(shí)用的vue導(dǎo)航鉤子
- VUE 實(shí)現(xiàn)滾動(dòng)監(jiān)聽(tīng) 導(dǎo)航欄置頂?shù)姆椒?/a>
- 簡(jiǎn)單實(shí)現(xiàn)vue驗(yàn)證碼60秒倒計(jì)時(shí)功能
- vue 實(shí)現(xiàn)通過(guò)手機(jī)發(fā)送短信驗(yàn)證碼注冊(cè)功能
- VUE實(shí)現(xiàn)圖片驗(yàn)證碼功能
- vue生成隨機(jī)驗(yàn)證碼的示例代碼
相關(guān)文章
在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié)
這篇文章主要介紹了在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
在vue-cli創(chuàng)建的項(xiàng)目中使用sass操作
這篇文章主要介紹了在vue-cli創(chuàng)建的項(xiàng)目中使用sass操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
淺析Vue下的components模板使用及應(yīng)用
這篇文章主要介紹了Vue下的components模板的使用及應(yīng)用,本文通過(guò)代碼介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
vue?element-ui的table列表中展示多張圖片(可放大)效果實(shí)例
這篇文章主要給大家介紹了關(guān)于vue?element-ui的table列表中展示多張圖片(可放大)效果的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
vue終極性能優(yōu)化方案(解決首頁(yè)加載慢問(wèn)題)
最近在做項(xiàng)目中前端采用Vue技術(shù),發(fā)現(xiàn)首頁(yè)加載速度非常之慢,下面這篇文章主要給大家介紹了關(guān)于vue終極性能優(yōu)化方案,主要解決首頁(yè)加載慢問(wèn)題,需要的朋友可以參考下2022-02-02
vue composition-api 封裝組合式函數(shù)的操作方法
在 Vue 應(yīng)用的概念中,“組合式函數(shù)”(Composables) 是一個(gè)利用 Vue 的組合式 API 來(lái)封裝和復(fù)用有狀態(tài)邏輯的函數(shù),這篇文章主要介紹了vue composition-api 封裝組合式函數(shù)的操作方法,需要的朋友可以參考下2022-10-10

