uni-app x开发商城系统,tabBar

一、概述

使用uni-app x框架开发的一款多平台支持的电子商务平台。它的主要特点是一次开发,多处使用,可以同时在Android,iOS,鸿蒙next,Web,微信小程序等多个平台上运行。

 

效果如下:

image

 二、tabBar

如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。

在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在 App 和小程序端提升性能。在这两个平台,底层原生引擎在启动时无需等待 js 引擎初始化,即可直接读取 pages.json 中配置的 tabBar 信息,渲染原生 tab。

 

上面图片,底部展示的几个图标区域,就是tabBar

image

三、实现tabBar

目录结构

在pages目录,新建3个文件夹,cart,member,news,并在目录下,新增同名的uvue文件,结构如下:

./
├── cart
│   └── cart.uvue
├── index
│   └── index.uvue
├── login
│   └── login.uvue
├── member
│   └── member.uvue
└── news
    └── news.uvue

 uvue文件,保持默认,在view里面,写对应的名字即可,比如cart.uvue内容如下:

<template>
    <view>
        购物车
    </view>
</template>

<script>
    export default {
        data() {
            return {

            }
        },
        methods: {

        }
    }
</script>

<style>

</style>

 

在static目录,新增目录icon,用来放图标文件。

./
├── cart-active.png
├── cart.png
├── home-active.png
├── home.png
├── member-active.png
├── member.png
├── news-active.png
└── news.png

这个文件,大家可以从网络上,剪切一个即可。

 

最后修改pages.json,这个才是重点。

完整内容如下:

{
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://doc.dcloud.net.cn/uni-app-x/collocation/pagesjson.html
        {
            "path": "pages/index/index"
            // "style": {
            //     "navigationBarTitleText": "uni-app x"
            // }
        },
        {
            "path": "pages/login/login"
        },
        {
            "path": "pages/cart/cart"
        },
        {
            "path": "pages/member/member"
        },
        {
            "path": "pages/news/news"
        }
    ],
    "globalStyle": {
        "navigationBarTextStyle": "white",
        "navigationBarTitleText": "uni-app x商城",
        "navigationBarBackgroundColor": "#fe9b95",
        "backgroundColor": "#F8F8F8"
    },
    "uniIdRouter": {},
    "easycom": {
        "autoscan": true,
        "custom": {
            "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
            "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
            "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
        }
    },
    "tabBar": {
        "selectedColor": "#fe9b95",
        "color": "#c0c0c0",
        "list": [{
                "text": "首页",
                "pagePath": "pages/index/index",
                "iconPath": "/static/icon/home.png",
                "selectedIconPath": "/static/icon/home-active.png"
            },
            {
                "text": "资讯",
                "pagePath": "pages/news/news",
                "iconPath": "/static/icon/news.png",
                "selectedIconPath": "/static/icon/news-active.png"
            },
            {
                "text": "购物车",
                "pagePath": "pages/cart/cart",
                "iconPath": "/static/icon/cart.png",
                "selectedIconPath": "/static/icon/cart-active.png"
            },
            {
                "text": "会员",
                "pagePath": "pages/member/member",
                "iconPath": "/static/icon/member.png",
                "selectedIconPath": "/static/icon/member-active.png"
            }
        ]
    }
}

主要看tabBar相关参数:

  • color:tab 上的文字默认颜色
  • selectedColor:tab 上的文字选中时的颜色
  • list:tab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab

 

其中 list 接收一个数组,数组中的每个项都是一个对象

  • text:tab 上按钮文字,在 App 和 H5 平台为非必填。例如中间可放一个没有文字的+号图标
  • pagePath:页面路径,必须在 pages 中先定义
  • iconPath:图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,当 position 为 top 时,此参数无效,不支持网络图片,不支持字体图标
  • selectedIconPath:选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px ,当 position 为 top 时,此参数无效

 

最后,重新编译运行,底部的tabBar,就可以正常显示了。

 

posted @ 2025-10-16 13:31  肖祥  阅读(23)  评论(0)    收藏  举报