随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率低,降低维护成本。 组件化对于任何一个业务场景复杂的前端应用以及经过多次迭代之后的产品来说都是必经之路。组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有很多工作来支撑组件化的进行,例如结合业务特性的模块拆分策略、模块间的交互方式和构建系统等等 。 前端的组件化,其实是对项目进行自上而下的拆分,把通用的、可复用的功能以黑盒的形式封装到一个组间中,然后暴露一些开箱即用的函数和属性配置供外部组件调用,实现与业务逻辑的解耦,来达到代码间的高内聚、低耦合,实现功能模块的可配置、可复用、可扩展。

今天给大家介绍的一款组件是仿京东拼多多领取优惠券弹出框popup组件, 可用于电商商品详情领券场景使用,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13405

效果图如下:

cc-defineCoupon

使用方法


<!-- 选择优惠券弹出层 --> <view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view> <view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')"> <scroll-view class="scrolls" scroll-y> <!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 --> <cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon> </scroll-view> </view>           // 打开优惠券弹框 opencoupon() { this.couponshow = true }, // 关闭优惠券弹框 hidecoupon() { this.couponshow = false }, //领取优惠券 立即使用事件 onReceive(item, index) { console.log(item, index) if (item.status == 1) { // 立即使用 事件 } else { this.couponList[index].status = 1 //领取成功 uni.showToast({ title: '领取成功', icon: 'none' }) } },

HTML代码实现部分


<template> <view class="content"> <button style="margin-top: 38px;" @click="opencoupon()">弹出优惠券</button> <!-- 选择优惠券弹出层 --> <view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view> <view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')"> <scroll-view class="scrolls" scroll-y> <!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 --> <cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon> </scroll-view> </view> </view> </template> <script> export default { components: { }, data() { return { couponshow: false, couponList: [ //优惠券列表 { money: 100, reduce: 10, date: '2023-05-09 2023-10-02', id: 1, status: 0, condition: ['新人专享', '通用卷'] }, { money: 100, reduce: 20, date: '2023-02-09 2023-10-02', id: 2, status: 0, condition: ['会员专享', '通用卷'] }, { money: 100, reduce: 30, date: '2023-02-09 2023-10-02', id: 3, status: 0, condition: ['数码产品可用', '不可与其他产品共享'] }, { money: 100, reduce: 40, date: '2023-02-09 2023-10-02', id: 4, status: 0, condition: ['新人专享', '可与其他产品共享'] }, { money: 100, reduce: 50, date: '2023-02-09 2023-10-02', id: 5, status: 0, condition: ['新人专享', '仅在支付时使用'] } ], } }, methods: { // 打开优惠券弹框 opencoupon() { this.couponshow = true }, // 关闭优惠券弹框 hidecoupon() { this.couponshow = false }, //领取优惠券 立即使用事件 onReceive(item, index) { console.log(item, index) if (item.status == 1) { // 立即使用 事件 } else { this.couponList[index].status = 1 //领取成功 uni.showToast({ title: '领取成功', icon: 'none' }) } }, } } </script> <style lang="scss" scoped> .content { display: flex; flex-direction: column; } .mask { width: 100%; height: 100vh; position: fixed; top: 0; left: 0; background: #000; z-index: 900; opacity: 0.7; } /* 优惠券 */ .coupon { background-color: #fff; border-radius: 10upx 10upx 0 0; position: fixed; left: 0; bottom: -1000upx; z-index: 999; transition: all 0.3s; } .scrolls { width: 100vw; height: 60vh; padding-top: 10upx; z-index: 500; } </style>

前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用的更多相关文章

  1. JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  2. 仿腾讯微博的一个弹出框 v0.1 beta

    仿腾讯微博的一个弹出框 v0.1 beta   代码写的不太好,新手请大家海涵,只为博君一笑,勿放在心上. 写在这里留作纪念,也许以后用的到. 效果 CSS .prompt{ position: ab ...

  3. vue中点击屏幕其他区域关闭自定义div弹出框

    直接上代码: mounted: function () { let that = this; $(document).on('click', function (e) { let dom = $('. ...

  4. JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...

  5. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  6. 关于隐式创建vue实例实现简化弹出框组件显示步骤

    我们在使用vue写alert组件的时候,经常是定义了一个alert.vue,然后引入alert.vue,然后配置参数等等,非常繁琐,那有没有一种方式可以像window.alert("内容&q ...

  7. 基于Vue.js PC桌面端弹出框组件|vue自定义弹层组件|vue模态框

    vue.js构建的轻量级PC网页端交互式弹层组件VLayer. 前段时间有分享过一个vue移动端弹窗组件,今天给大家分享一个最近开发的vue pc端弹出层组件. VLayer 一款集Alert.Dia ...

  8. [ vue ] Quasar封装q-dialog组件,在外层实现弹出框的开启和关闭

    场景描述: 见:https://www.cnblogs.com/remly/p/12981582.html 具体实现: <!-- 父组件 --> <template> < ...

  9. Vue父组件如何调用子组件(弹出框)中的方法的问题

    如果子组件是一个弹出框,只有在触发某个点击事件时弹出框才能出现(也就是说在父组件中的子组件使用上用了v-if),那在父组件上如果不点击弹出框是不能获取到$ref的. 原因就是:引用指向的是子组件创建的 ...

  10. vue--vant组件库Dialog弹出框

    安装vant UI框架: cnpm install vant –-save-dev 导入组件-在main.js里: import Vant from 'vant'; import'vant/lib/v ...

随机推荐

  1. 深入理解 python 虚拟机:字节码教程(1)——原来装饰器是这样实现的

    深入理解 python 虚拟机:字节码教程(1)--原来装饰器是这样实现的 在本篇文章当中主要给大家介绍在 cpython 当中一些比较常见的字节码,从根本上理解 python 程序的执行.在本文当中 ...

  2. SQL语句的其他关键字

    目录 数据准备 编写SQL语句小技巧 查询关键字之where筛选 查询关键字之group by 分组 查询关键字之having过滤 查询关键字之distinct去重 查询关键字之order by排序 ...

  3. PHP开发者交流群

    PHP开发者交流群 欢迎大家加入学习讨论 QQ群(493834732)

  4. 记录 跨境猴 shopee 虾皮 货代 贴单 仓储 打包系统 介绍

    shopee虾皮|lazada|shopify代打包贴单仓储系统(简称:跨境猴)基于ThinkPHP6.0+AdminLTE-2.3.11+JQuery+PHP7.0+Swoole+Mysql5.5+ ...

  5. React中图片的相对路径引入和绝对路径引入

    React中当在JSX中的img标签中引入时使用相对路径引入,地址是基于index.html的而不是当前jsx文件的,如 <img src="./src/assets/images/g ...

  6. MySQL 中常见的几种高可用架构部署方案

    MySQL 中的集群部署方案 前言 MySQL Replication InnoDB Cluster InnoDB ClusterSet InnoDB ReplicaSet MMM MHA Galer ...

  7. for of 和 for in 的区别

    1 var arr = ["f", "6", 3, "a", 7]; 2 var obj = { name: "shun" ...

  8. C# Nuget版本号排序

    Nuget包版本号和我们软件应用版本号一样,不过因为稳定性等的考虑,组件版本有更高的要求.预发布版本使用频率更高 版本号介绍,详见我朋友胡承老司机的博客:Nuget包的版本规范 (qq.com) 我这 ...

  9. Python 持久化-文件

    文件 长久保存信息的一种数据信息集合 常用操作 打开关闭(文件一旦打开,需要关闭操作) 读写内容 查找 open函数 open函数负责打开文件,带有很多参数 第一个参数: 必须有,文件的路径和名称 m ...

  10. Swift下Data处理全流程:从网络下载,数模转换,本地缓存到页面使用

    Swift下将网络返回json数据转换成struct 假如网络请求返回的数据结构是一个深层嵌套的Json 首先要通过key-value取出这个json中的数据源 // 将返回的json字符串转Dict ...