项目实战——“微商城”前后台【005】之前台项目首页编写

上一篇说到,我们把必须用的路由、UI组件库给安装,试用OK。这一篇,我们直接编写组件写静态页面。

第一篇提到的分析首页结构,页面底部有个固定的导航栏。我来先来解决这个导航栏。

固定导航栏

因为很多页面都有这个导航栏,所以我们把他封装成一个公共组件,然后在多个地方引用。

现在有两种方式,如下:

1,在每个需要用到的地方都引用一遍,当前选中的索引,手动匹配。

2,在 APP.vue 中统一使用,路由配置控制当前页面是否需要显示组件。(推荐 :good)

综合比较,我们选择第二种。

新建 src/components/TabBar.vue ,使用 vant 的 van-tabbar 组件编写导航栏。

javascript 复制代码
<template>
  <van-tabbar route fixed placeholder border>
    <van-tabbar-item replace :to="{ name: 'Home' }" icon="home-o">首页</van-tabbar-item>
    <van-tabbar-item replace :to="{ name: 'Category' }" icon="apps-o">分类</van-tabbar-item>
    <van-tabbar-item replace :to="{ name: 'Message' }" icon="chat-o" badge="4">消息</van-tabbar-item>
    <van-tabbar-item replace :to="{ name: 'Cart' }" icon="shopping-cart-o" >购物车</van-tabbar-item>
    <van-tabbar-item replace :to="{ name: 'User' }" icon="user-o">我的</van-tabbar-item>
  </van-tabbar>
</template>

<script setup>

</script>

<style scoped>
.van-tabbar-item {
  --van-tabbar-item-active-color: #FF8000;
}
</style>

修改文件路径为 src/App.vue , 引入并且使用 TabBar组件。编写逻辑:监听路由中的isTab是否为true,如果为true,展示底部TabBar。

javascript 复制代码
<script setup>
import TabBar from './components/TabBar.vue';
import { useRoute } from 'vue-router';
import { ref , watch } from 'vue';

const route = useRoute();
const isShowTabbar = ref(true)

// 监听路由中的isTab是否为true,如果为true,展示底部TabBar
watch(
  () => route.meta,
  (meta) => {
    isShowTabbar.value = meta.isTab;
  },
  { immediate: true }
)


</script>

<template>
  <router-view></router-view>
  <tab-bar v-if="isShowTabbar"></tab-bar>

</template>

<style scoped>
/* 全局样式预留 */
</style>

需要效果生效,还需要在路由里面 meta 属性,我们来配置 home 页面的路由配置,并且查看效果。

javascript 复制代码
    {
        path: '/',
        name: 'Home',
        component: () => import('../views/Home.vue'),
        meta: { title: '首页', isTab: true }
    },

查看效果,已经能显示出来了,并且自动匹配到索引,显示高亮:

相关推荐
A黄俊辉A11 小时前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
honkun614 小时前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs199114 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
雪芽蓝域zzs14 小时前
第26章:ECharts 自定义主题 + 页面一键切换主题(深色 / 浅色两套)
vue.js·echars
雪芽蓝域zzs15 小时前
第22章:ECharts 图表联动(多图表交互联动)
vue.js·echars
daols8815 小时前
vue 表格组件 vxe-table 实现虚拟滚动与无需滚动加载
vue.js·vxe-table
雪芽蓝域zzs15 小时前
第18章:ECharts 折线图 + 标记点、标记线,自定义 tooltip
vue.js·echars
雪芽蓝域zzs16 小时前
第24章:ECharts 地图组件(基础行政区地图,若依 Vue3)
vue.js·echars
计算机毕设定制辅导-无忧学长17 小时前
《基于Vue的流浪动物救助中心管理系统的设计与实现》
java·vue.js·spring boot·流浪动物救助中心管理系统
雪芽蓝域zzs17 小时前
第25章:地图下钻交互(点击省份,切换到对应省份城市地图)
vue.js·echars