【温馨提示】:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划。

【项目地址】
项目采用Git进行管理,最终项目将会发布到GitHub中,感兴趣的小伙伴们可以一起学习,共同完善本项目。
项目地址:GitHub


第三节:底部导航栏组件

开发思路

在我们拿到一个项目后,不要急着进行业务功能的开发,首先了解清楚需求,并进行详细的分析思考,采用什么技术栈。确定方向后,先把项目基础架构创建好。这一过程就像我们建房子一样,首先要把地基建好,再一层一层的起房子,最后检测验收。
【项目思路】首先我们要做一个视频app,采用vue作为技术栈,本次项目运用到了组件及路由。首先我们从基础架构的搭建开始,创建项目功能页面,配置路由,最后实现页面功能。

vue组件介绍

1.组件是什么呢?
组件是一个自定义可复用的 Vue 实例,且带有一个特有名称。顾名思义,在开发项目的过程中我们会遇到重复的内容,这样我们就可以把重复部分内容进行封装,给其命名,下次有相同内容的地方就可以直接使用这个封装。
2.组件有哪些注册类型呢?
为了能在模板中使用组件,我们定义的组件必须先注册以便 Vue 能够识别。因此,组件的注册可分为两种注册类型:全局注册和局部注册。
【温馨提示】vue官网网址:组件内容详细地址

规模化路由介绍

1.Vue Router是什么呢?
Vue Router 是 Vue.js (opens new window)官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌了。
2.为什么要使用路由呢?
在我们开发一个比较复杂的项目时,使用路由可以将单个页面通过路由进行紧密的联接响应。我们这次项目将采用vue.js 组件 + vue router 的 思路方向开启。
3.嵌套路由
实际生活中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件。本次项目将会使用到嵌套路由,如下图:

温馨提示】vue官网网址:路由内容详细地址

基础架构实现

1.功能页面的实现
根据项目需求我们可以知道,本次项目 底部有首页(关注、推荐)、朋友、发布、消息、我的等5个 TabBar 组成,接下来我们要根据这5个tabBar分别构建5个页面。

2.路由配置
由于底部 导航在每个页面都需要,所以我们应该创建一个主页面,在这个主页面通过嵌套子路由的方式来加载各个页面。
路由配置代码:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';Vue.use(VueRouter);const routes = [{path: '/',redirect: '/index/recommend/', // app打开之后 默认跳转到首页的推荐标签栏},{path: '/index',redirect: '/index/recommend/', // app打开之后 默认跳转到首页的推荐标签栏},{path: '/',name: 'Home',component: Home,children: [{path: '/index', // 首页页面路由name: 'index',component: () => import(/* webpackChunkName: "Index" */ '../views/index/Index.vue'),},{path: '/friends', // 朋友页面路由name: 'friends',component: () => import(/* webpackChunkName: "fllow" */ '../views/friends/Friends.vue'),},{path: '/news', // 消息页面路由name: 'news',component: () => import(/* webpackChunkName: "news" */ '../views/news/News.vue'),},{path: '/me', // 我的信息页面路由name: 'me',component: () => import(/* webpackChunkName: "me" */ '../views/me/Me.vue'),},],},{path: '/issue', // 发布页面路由name: 'issue',component: () => import(/* webpackChunkName: "issue" */ '../views/issue/Issue.vue'),},
];const router = new VueRouter({mode: 'history',base: process.env.BASE_URL,routes,
});export default router;

3.底部导航栏组件
1)底部导航布局及效果图

2)组件结构
组件封装主要利用了 vue 的两个属性:
props: 接收父组件给子组件的传值;
computed:计算属性(当其依赖的属性的值发生变化时,计算属性会重新计算,反之,则使用缓存中的属性值)

3)实现代码

  • Tabbar
    底部导航父级组件
/*
底部导航父组件
author:enjsky.g
time:2021-05-06
*/
<template><div class="tab-bar" ><tab tab-title="首页" nav-path="/index"></tab><tab tab-title="朋友" nav-path="/friends"></tab><tab nav-path="/issue"><img class="dy-btn" alt="" src="../../../assets/images/dy-btn.png"></tab><tab tab-title="消息" nav-path="/news"></tab><tab tab-title="我的" nav-path="/me"></tab></div>
</template><script>
import Tab from './TabItem.vue';export default {name: 'Tabbar',components: {Tab,},
};
</script><style lang="less" scoped>.tab-bar {height: 50px;line-height: 50px;width: 100%;background: #000000;position: fixed;bottom: 0;left: 0;color: #cccccc;font-size: 16px;display: flex;justify-content: center;z-index: 9;.item {flex: 1;text-align: center;}.dy-btn {display: inline-block;width: 50px;height: 30px;margin: 10px;}}
</style>
  • TabItem
    底部导航子组件
/*
底部导航单组件
author:enjsky.g
time:2021-05-06
*/
<template><div class="item" @click="itemClick"><router-link :to="navPath" :class="{active: isActive}" tag="span">{{tabTitle}}<slot></slot></router-link></div>
</template><script>
export default {name: 'TabItem',props: {tabTitle: {type: String,default: '',},navPath: {type: String,require: true,},},computed: {isActive() {return this.$route.path === this.navPath;},},methods: {itemClick() {},},
};
</script><style lang="less" scoped>
.item {flex: 1;text-align: center;
}
.active {color: #ffff;
}
</style>

结束语

本章主要讲述了项目开发的思路、组件及路由的基础内容和本次项目底部导航组件的实现,若有不足或不全面之处,欢迎留言,本人将持续改进更新。

项目仓库

项目采用Git进行管理,最终项目将会发布到GitHub中,感兴趣的小伙伴们可以一起学习,共同完善本项目。
项目地址:GitHub


上一篇:项目基础架构搭建
下一篇:顶部导航栏组件功能

vue.js项目实战运用篇之抖音视频APP-第三节:底部导航栏组件功能相关推荐

  1. vue.js项目实战运用篇之抖音视频APP-第十五节: 朋友页面功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  2. vue.js项目实战运用篇之抖音视频APP-第二节:项目基础架构搭建

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  3. vue.js项目实战运用篇之抖音视频APP-第十一节: 注册登录及验证码功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  4. vue.js项目实战运用篇之抖音视频APP-第八节: 视频播放功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  5. vue.js项目实战运用篇之抖音视频APP-第一节:项目环境搭建

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  6. vue.js项目实战运用篇之抖音视频APP-第四节:顶部导航栏组件功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  7. vue.js项目实战运用篇之抖音视频APP-第十节: 评论列表功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  8. vue.js项目实战运用篇之抖音视频APP-第六节: 首页视频详情功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  9. vue.js项目实战运用篇之抖音视频APP-第九节: 视频上滑下拉播放功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

最新文章

  1. Google回归中国对SEO们意味着什么
  2. 腾讯专家教你如何保证应用开发安全
  3. sdram 时钟相位_stm32f429主频大于160MHz时,sdram数据不稳定
  4. 大数据处理时的一种BitMap小算法
  5. c语言ascii码表_新手小白整理C语言笔记备忘,带你十分钟理解C语言
  6. 《MySQL——关于grant赋权以及flush privileges》
  7. 事关Animation Tree的工作随笔(一)
  8. DBC2000数据库,DBC2000怎么设置?DBC2000架设传奇教程
  9. 阿里云云原生一体化数仓 - 数据安全能力解读
  10. 生鲜水果小程序微信源码完整可用精品
  11. STM32—雨滴检测传感器
  12. php 获取货币符号,如何通过货币符号CURRENCY 获取对应的 LOCALE 信息。
  13. linux fat32转ntfs,fat32怎么转换ntfs格式?不损坏数据FAT32转NTFS命令是什么 电脑维修技术网...
  14. 程序猿段子_程序员的那些段子
  15. word分页符的删除
  16. 距离模糊与多普勒模糊
  17. 远程计算机或设备将不接受连接,IE无法上网
  18. 机器学习算法-KMeans聚类算法解析及伪代码实现。
  19. Cytoskeleton 磷酸盐测定试剂盒说明书
  20. DBA职业生涯规划:八步打造高级DBA专家

热门文章

  1. 让AWStats识别谷歌浏览器--Chrome
  2. 腾讯蓝鲸智云版本再迎新升级,正式推出容器化部署版本V7.0
  3. 监控TCP/IP网络的工具netstat介绍
  4. 关于数据库的卸载及服务残留问题
  5. 关于手机分期付款项目的总结
  6. PS学习2 写轮眼
  7. 索尼发布新一代降噪豆耳机WF-1000XM4 处理器是亮点
  8. 小米max2 android p,小米Max2完全曝光:6.4寸巨屏 性价比爆棚
  9. 分布式-4分布式集群
  10. Matlab 将字符串转为结构体变量名字