前端Vue自定义个性化导航栏菜单组件的设计与实现

news2024/11/18 1:32:21

摘要:


随着前端技术的飞速发展和业务场景的日益复杂,组件化开发已成为提升开发效率和降低维护成本的关键手段。本文将以Vue uni-app平台为例,介绍如何通过自定义导航栏菜单组件,实现业务逻辑与界面展示的解耦,以及如何通过组件化开发提升系统的可维护性和可扩展性。

一、引言

在前端开发中,随着业务逻辑的日益复杂,传统的整块应用开发方式逐渐暴露出效率低下、维护困难等问题。一个小小的功能改动可能引发整体逻辑的变动,这不仅增加了开发成本,也提高了系统的脆弱性。因此,组件化开发逐渐受到开发者的青睐。

组件化开发将系统拆分成独立的、可复用的组件,每个组件负责特定的功能或界面展示,通过组件间的组合与通信,实现系统的构建。这种方式不仅提高了开发效率,也使得系统的维护变得更加简单。

二、组件化开发的重要性

组件化开发不仅仅是模块拆分的表面工作,它涉及到模块的拆分策略、交互方式、构建系统等多个方面。通过合理的模块拆分,可以将复杂的业务逻辑拆分成独立的、可复用的组件,提高代码的可读性和可维护性。同时,通过定义清晰的组件间交互方式,可以实现组件间的解耦,提高系统的可扩展性。

三、Vue uni-app自定义导航栏菜单的实现

在Vue uni-app中,我们可以通过自定义组件的方式实现导航栏菜单。首先,在page.json中设置导航栏样式为custom,以启用自定义导航栏。然后,在页面中引入自定义的导航栏组件cc-navHeader,并通过props传递菜单数据和事件处理函数。

通过自定义导航栏组件,我们可以轻松实现导航栏的定制化,包括左侧导航菜单按钮、中部logo图标、右侧导航菜单按钮等。同时,通过定义事件处理函数,我们可以实现导航栏按钮的点击事件处理,满足业务需求。

效果图如下:

图片

图片

图片

图片

使用方法
在page.json设置
{
            "path": "pages/index/index",
            "style": {
                "navigationStyle":"custom",
                "app-plus":{
                    "titleNView":false
                }
            }
}

<!-- menuArr:导航菜单栏  @leftClick: 左导航按钮事件点击  @rigClick: 右导航按钮事件点击-->
<cc-navHeader :menuArr="menuArr" @leftClick="leftClick" @rigClick="rigClick"></cc-navHeader>
HTML代码实现部分
<template>
    <view class="content">
        <!-- menuArr:导航菜单栏  @leftClick: 左导航按钮事件点击  @rigClick: 右导航按钮事件点击-->
        <cc-navHeader :menuArr="menuArr" @leftClick="leftClick" @rigClick="rigClick"></cc-navHeader>

        <!-- 自定义顶部搜索框 用于搜索跳转 skipUrl:跳转url为绝对路径 /pages开头 -->
        <cc-headSearch skipUrl="/pages/index/search"></cc-headSearch>

        <!-- 自定义轮播图 swiperArr: 轮播数组 -->
        <cc-mySwiper :swiperArr="banner"></cc-mySwiper>

    </view>
</template>

<script>
    export default {

        data() {
            return {

                menuArr: [{
                        "id": "1",
                        "menu": "手机",
                        "url": "/pages/phone/phone"
                    },
                    {
                        "id": "2",
                        "menu": "升学",
                        "url": "/pages/study/study"
                    },
                    {
                        "id": "3",
                        "menu": "配件",
                        "url": "/pages/parts/parts"
                    },
                    {
                        "id": "4",
                        "menu": "生活",
                        "url": "/pages/life/life"
                    }
                ],
                banner: [{
                        "id": 1,
                        "image": "/static/image/banner1.jpg"
                    },
                    {
                        "id": 2,
                        "image": "/static/image/banner2.jpg"
                    },
                    {
                        "id": 3,
                        "image": "/static/image/banner3.jpg"
                    },
                    {
                        "id": 4,
                        "image": "/static/image/banner4.jpg"
                    }
                ]

            }
        },
        mounted() {

        },
        methods: {

            leftClick(item) {

                uni.showModal({
                    title: '点击导航栏按钮',
                    content: '点击导航栏左侧搜索按钮 '
                })
            },
            rigClick(flag) {

                if (flag == 0) {
                    uni.showModal({
                        title: '点击导航栏按钮',
                        content: '点击导航右侧购物车按钮 '
                    })
                } else {

                    uni.showModal({
                        title: '点击导航栏按钮',
                        content: '点击导航右侧更多按钮 '
                    })
                }

            }

        }
    }
</script>

<style>
    page {

        background-color: #f7f7f7;
    }

    .content {
        display: flex;
        flex-direction: column;

    }
</style>

四、组件化开发的挑战与解决方案

虽然组件化开发带来了诸多好处,但在实际开发中也会遇到一些挑战。例如,如何合理拆分组件、如何定义组件间的交互方式、如何保证组件的性能等。针对这些问题,我们可以采取一些解决方案。例如,通过分析业务需求,合理拆分组件,避免组件过于庞大或过于琐碎;通过定义清晰的组件间交互方式,实现组件间的解耦;通过优化组件的性能,提高系统的响应速度等。

五、结论

通过Vue uni-app的自定义导航栏菜单组件的实践,我们可以看到组件化开发在提高开发效率和降低维护成本方面的巨大优势。未来,随着前端技术的不断发展,组件化开发将成为前端开发的主流方式。因此,我们应该不断学习和掌握组件化开发的技术和方法,以应对日益复杂的业务场景和不断变化的用户需求。

项目下载地址:

https://ext.dcloud.net.cn/plugin?id=13152

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

25 使用MapReduce编程了解垃圾分类情况

测试数据中1表示可回收垃圾&#xff0c;2表示有害垃圾&#xff0c;4表示湿垃圾&#xff0c;8表示干垃圾。 统计数据中各类型垃圾的数量&#xff0c;分别存储可回收垃圾、有害垃圾、湿垃圾和干垃圾的统计结果。 &#xff08;存储到4个不同文件中&#xff0c;垃圾信息&#xff0…

高效记录收支明细,预设类别账户,智能统计财务脉络,轻松掌握个人财务!

收支明细管理是每位个人或企业都必须面对的财务任务&#xff0c;财务管理已经成为我们生活中不可或缺的一部分。如何高效记录收支明细&#xff0c;预设类别账户&#xff0c;智能统计财务脉络&#xff0c;轻松掌握个人财务&#xff1f;晨曦记账本为您提供了完美的解决方案&#…

JVM的垃圾回收机制--GC

垃圾回收机制&#xff0c;是java提供的对于内存自动回收的机制。java不需要像C/C那样手动free()释放内存空间&#xff0c;而是在JVM中封装好了。垃圾回收机制&#xff0c;不是java独创的&#xff0c;现在应该是主流编程语言的标配。GC需要消耗额外的系统资源&#xff0c;而且存…

“2024深圳数字能源展”共同探讨数字能源未来发展方向和挑战

在数字化浪潮的推动下&#xff0c;新一轮科技革命与产业革命正以前所未有的速度加速兴起。在这个时代背景下&#xff0c;数字化技术与能源行业的高度融合&#xff0c;使得能源数字化成为未来发展的必然趋势。数字经济浪潮的蓬勃兴起&#xff0c;为能源行业的数字化转型提供了强…

网络安全-钓鱼篇-利用cs进行钓鱼

一、环境 自行搭建&#xff0c;kill&#xff0c;Windows10&#xff0c;cs 二、原理 如图所示 三、钓鱼演示 首先第一步&#xff1a;打开System Profiler-分析器功能 选择克隆www.baidu.com页面做钓鱼 之后我们通过包装域名&#xff0c;各种手段让攻击对象访问&#xff1a;h…

XXE漏洞详解——进阶篇

读取文件时有特殊符号 在读取文件时&#xff0c;文件中包含"<,>,&"等这些特殊符号时&#xff0c;会被xml解析器解析&#xff0c;报错从而导致读取失败&#xff0c;例如尝试读取以下文件 C:\test.txt 内容&#xff1a; <Baize Sec> payload: <…

搜维尔科技:Movella Xsens用于动画,CG,短视频制作案例

用户名称 广州百漫文化传播有限公司 应用场景 基于Xsens MVN Link 动作捕捉系统的动画制作、CG制作、短视频制作、快速动画MAYA插件、影视动漫实时合成预渲染。 现场照片 《西行纪》内容简介&#xff1a;在远古神明的年代&#xff0c;世间存在着天众、龙众、阿修罗等八部众…

探索 ChatboxAI:智能对话的新时代

在人工智能迅速发展的今天&#xff0c;智能对话已经成为了我们日常生活中不可或缺的一部分。从智能助理到聊天机器人&#xff0c;AI 技术正在改变我们与世界互动的方式。今天&#xff0c;我们要介绍的是一个全新且功能强大的平台——ChatboxAI。 什么是 ChatboxAI&#xff1f;…

S32K --- FLS MCAL配置

一、前言 二、MCAL配置 添加一个Mem_43_infls的模块, infls是访问内部flash, exfls是访问外部flash 2.1 General 这边暂时保持的默认,还没详细的去研究,等有空研究了,我再来更新 2.2 MemInstance 双金“index”的下标“0”可以进里面详细配置,这个是基本操作了。 2.2.1 G…

为什么说想当产品经理,最好的时候就是现在?

今年,随着人工智能(AI)技术的火热,AI产品经理岗位的需求也一路暴涨,薪资也同步水涨船高。 根据美国招聘社交媒体Glassdoor的数据,AI产品经理年收入高达125万元,是普通产品经理年收入的1.43倍,更是项目经理年收入的2.14倍。在中国,大厂AI产品经理的月收入也高达3到7万左右。但即…

国家首批20个“数据要素×”典型案例发布,珈和科技助力金融、气象两案例入榜

5月24日&#xff0c;国家数据局会同生态环境部、交通运输部、金融监管总局、中国科学院、中国气象局、国家文物局、国家中医药局等部门在第七届数字中国峰会主论坛上发布首批20个“数据要素”典型案例。 其中&#xff0c;珈和科技以其专业的产品和服务助力金融服务领域的浙江网…

Linux 系统编程笔记--基本概念(一)

操作系统&#xff1a; 管理计算机硬件和软件资源的计算机程序。 内核&#xff1a; 操作系统的核心&#xff0c;是应用程序连接硬件设备的桥梁。 CPU 可以在两种状态下运行:用户态和内核态&#xff0c;在用户态下运行时&#xff0c;CPU 只能访问用户空间的内存;在内核态运行时&…

【Pandas】深入解析`pd.read_json()`函数

【Pandas】深入解析pd.read_json()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#x…

学习笔记|如何移植NCNN

在计算机视觉和深度学习领域&#xff0c;NCNN&#xff08;Netural Network Computer Vision&#xff09;是一个轻量级的神经网络计算框架&#xff0c;被广泛应用于各类嵌入式设备和移动平台。今天&#xff0c;让我们一同跟随共创社团队的步伐&#xff0c;揭秘他们如何进行NCNN的…

React Hooks是如何保存的

React 函数式组件是没有状态的&#xff0c;需要 Hooks 进行状态的存储&#xff0c;那么状态是怎么存储的呢&#xff1f;Hooks是保存在 Fiber 树上的&#xff0c;多个状态是通过链表保存&#xff0c;本文将通过源代码分析 Hooks 的存储位置。 创建组件 首先我们在组件中添加两…

净念——雷江书画艺术汇报展暨作品捐赠仪式在合阳博物馆盛大开幕

古莘初夏万物秀,丹青妙笔谱华章&#xff01;5月25日上午9时&#xff0c;由合阳县委宣传部、合阳文化和旅游局主办&#xff0c;合阳历史文化博物馆、合阳县旅游发展有限公司承办的净念雷江书画艺术汇报展暨作品捐赠仪式在合阳县历史博物馆盛大开幕。 陕西省原副省长魏增军&#…

SAP锁机制(SAP Locks)经验小结

1. 数据一致性与锁 为什么要有锁机制&#xff1f;其背后的核心逻辑在于“保证数据的一致性”。 当数据被应用程序修改时&#xff0c;我们必须要保证修改后的数据具有一致性。在SAP系统中&#xff0c;将一致的数据状态从一个状态变动到另一个一致状态的时间跨度被称为LUW&…

宝塔安装java环境Jdk1.8

1.打开宝塔——选择“终端”——输入SSH的服务器IP和SSH账号&#xff0c;选择密码验证&#xff0c;输入密码 2。登录成功后&#xff0c;输入&#xff1a;yum list java-1.8*&#xff0c;用于列出所有与 “java-1.8” 相关的软件包 yum list java-1.8* 3.安装Jdk1.8: yum insta…

登峰造极,北斗相伴——纪念人类首次登顶珠穆朗玛峰71周年

71年前的今天&#xff0c;1953年5月29日11时30分&#xff0c;人类实现了一个伟大的壮举&#xff1a;首次登上了珠穆朗玛峰&#xff0c;这座海拔8848.86米的世界最高峰。这是一次充满了艰辛、勇气和智慧的探险&#xff0c;也是一次改变了人类历史和文化的探险。 自那以后&#…

有没有好用的供应商协同软件,能实现文件的便捷协作?

制造业供应商间文件协作非常频繁&#xff0c;而频繁的文件协作也是保证业务有效开展的基础&#xff0c;对于确保生产流程的顺畅和高效至关重要。以下是一些常见的制造业供应商文件协作的例子&#xff1a; 采购订单和合同&#xff1a;采购订单是供应商和制造商之间最基本的文件协…