SPA项目开发之首页导航栏+左侧菜单,在线web前端开发

本文讲述了在Vue项目中使用LeftNav.vue和TopNav.vue组件进行导航配置,涉及路由设置、登录功能、组件注册及解决出现的问题,如asideClass属性未定义、图片绑定和左侧树收缩功能的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

②、LeftNav.vue

<el-menu default-active=“2” class=“el-menu-vertical-demo” background-color=“#334157”

text-color=“#fff” active-text-color=“#ffd04b” :collapse=“collapsed” >

导航一

分组一

选项1

选项2

选项3

选项4

选项1

导航二

导航三

导航四

③、TopNav.vue

<img class=“showimg” :src=“collapsed?imgshow:imgsq” @click=“doToggle()”>

超级管理员

设置

个人中心

<el-menu-item @click=“exit()” index=“2-3”>退出

④、导入图片/src/assets/img/…

公共组件在components目录下,业务组件在views目录下

2、配置路由

src/router/index.js

import Vue from ‘vue’

import Router from ‘vue-router’

import HelloWorld from ‘@/components/HelloWorld’

import Login from ‘@/views/Login’

import Reg from ‘@/views/Reg’

import AppMain from ‘@/components/AppMain’

import LeftNav from ‘@/components/LeftNav’

import TopNav from ‘@/components/TopNav’

Vue.use(Router)

export default new Router({

routes: [{

path: ‘/’,

name: ‘Login’,

component: Login

},

{

path: ‘/Reg’,

name: ‘Reg’,

component: Reg

},

{

path: ‘/Login’,

name: ‘Login’,

component: Login

},

{

path: ‘/AppMain’,

name: ‘AppMain’,

component: AppMain,

children: [{

path: ‘/LeftNav’,

name: ‘LeftNav’,

component: LeftNav

},

{

path: ‘/TopNav’,

name: ‘TopNav’,

component: TopNav

}

]

},

]

})

3、登录成功跳主界面

修改登录界面登录成功后跳主界面

src/views/Login.vue(登录)        登录成功跳转到主界面

submitForm() {

let url = this.axios.urls.SYSTEM_USER_DOLOGIN;

this.axios.post(url, this.ruleForm).then((resp) => {

console.log(resp);

if (resp.data.code == 1) {

this.$message({

message: resp.data.msg,

type: ‘success’

});

this.$router.push({path:‘/AppMain’});

} else {

this.$message({

message: resp.data.msg,

type: ‘warning’

});

}

}).catch(function(error) {

console.log(error);

});

}

接下来运行会报一些错,下面会一一解决

①asideClass属性未定义

解决:在AppMain.vue中定义asideClass属性

折叠

.main-aside-collapsed

不折叠

.main-aside

// 导出模块

export default {

**data() {

return {

// 默认为不折叠

asideClass: ‘main - aside’

}

}**

};

②没有注册LeftNav 和TopNav

解决:在AppMain.vue中注册LeftNav和TopNav

// 导出模块

export default {

data() {

return {

// 默认为不折叠

asideClass: ‘main - aside’

}

},

components: {

TopNav,

LeftNav

}

};

③TopNav.vue中collapsed?imgshow:imgsq属性未定义(:src=“collapsed?imgshow:imgsq”  )

**:v-bind:**是vue修饰的属性

解决:在TopNav.vue中定义collapsed?imgshow:imgsq属性

export default {

**data() {

return {

collapsed: false,

imgshow: require(‘@/assets/img/show.png’),

imgsq: require(‘@/assets/img/sq.png’),**

**}

}**

}

要通过require(‘@/’)添加图片的地址(注意/表示src目录下的文件)

collapsed?imgshow:imgsq

三元运算符,当collapsed为true时选择第一个(imgshow),当collapsed为false时选择第二个(imgsq)

将下面不用的属性删除

@open=“handleOpen” @close=“handleClose”

:collapse-transition=“bb”

到这里项目就没有报错了

三,左侧树收缩功能

==========

但是点击收起图标会报错,因为没有定义方法

解决:

①、增加实例

src/main.js

new Vue({

el: ‘#app’,

**data() {

return {

Bus: new Vue({**

**})

}

},**

router,

components: {

App

},

template: ‘’

})

②点击图标,图标切换

src/components/TopNav.vue

export default {

data() {

return {

// 默认不折叠

collapsed: false,

imgshow: require(‘@/assets/img/show.png’),

imgsq: require(‘@/assets/img/sq.png’),

}

},

**methods: {

doToggle() {

this.collapsed = !this.collapsed;

}

}**

}

完善收缩功能

①、src/components/LeftNav.vue

export default {

data() {

return {

collapsed: false

}

},

// 钩子函数,主键被访问就执行

created() {

// 监听bus,bus是vue实例,所以有$on方法

// 定义的方法,v就是传递来的this.collapsed变量

this. r o o t . B u s . root.Bus. root.Bus.on(“collapsed-aside”, (v) => {

this.collapsed = v;

});

}

}

②、src/components/AppMain.vue

// 导入组件

import TopNav from ‘@/components/TopNav.vue’

import LeftNav from ‘@/components/LeftNav.vue’

// 导出模块

export default {

data() {

return {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

[外链图片转存中…(img-yAaIpUnJ-1711954985736)]
[外链图片转存中…(img-Ss8rPJHo-1711954985737)]
[外链图片转存中…(img-VVWjvxZL-1711954985738)]
[外链图片转存中…(img-7svLXz5n-1711954985738)]
[外链图片转存中…(img-VxXwwXfK-1711954985738)]
[外链图片转存中…(img-hE78NO1F-1711954985739)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-uYvFv32e-1711954985739)]

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值