【Vue3+TypeScript】CRM系统项目搭建之 — 关于如何设计出优质的 Vue 业务组件

简介: 【Vue3+TypeScript】CRM系统项目搭建之 — 关于如何设计出优质的 Vue 业务组件

前言

前面知道了 Element Plus 关于组件设计时使用 CSS 变量来进行重构,接着这里就在正式进入业务开发之前,来学习如何在封装组件时在其可拓展性与贴合业务去寻找一个平衡点。

这是来自 B 站 up 主的分享,在上水课的时候偶然刷到的,就决定学习学习。


组件设计基本原则

  1. 组件是要去复用到很多地方的,所以设计组件最核心的就是在其可拓展和贴合业务之间找一个平衡点,使得业务组件更加偏向业务,而基础组件更加偏向于拓展。
  2. 尽量提供简便,满足大多数场景下 0 配置或极少配置就可用,特殊场景也可以拓展自定义。

UI 组件展示

如上可以看到这个商品组件在不同的地方会有不同的展示,寻找不同之处,右下角的按钮、商品内容区、商品的标题展示也有所不同、最右边的可选框也有不同。

分解 UI 结构

图片区分析
图片统一问题
  1. 图片大小控制,图片的大小是写死,还是交由外部进行控制,外部又如何进行控制呢?
  2. 统一的兜底图,可能有些图片是没有传入的,这里又属于是商品展示项,是不是需要一个兜底图呢?
  3. 图片地址,这个图片地址是从传入的商品信息对象提取地址吗?
专门思考的问题
  1. 以后是否有图片需要加上 icon,加标注的可能呢?
  2. 图片的兜底图是否会有替换的可能呢?
图片区方案
  1. 图片大小默认按设计图来,如果有特殊需要走css调控,组件css层级设计的浅一点
  2. 统一兜底图,留出兜底图自定义控件
  3. 默认显示一张图片,如有特殊需要,支持插槽替换
  1. 地址不单独传入直接传入整体商品信息,组件内部提取地址,也预留props可以强制定义url地址
具体代码设计

标题区
问题分析
  1. 标题字体大小,字体样式是否固定
  2. 标题有时候两行省略,有时候一行省略如何控制
  3. 标题内容如何处理
标题区解决方案
  1. 按额外内容区有几条决定标题几行,等于四条就一行,小于等于三条显示两行,预留props可以强制指定几行
  2. 字体大小,样式固定,交由css处理
  3. 内容默认按组件传入的所有商品信息提取标题,支持强制指定
具体代码设计

额外信息区
问题分析
  1. 行数不固定,每行内容不固定,如何传入?

方案一: 整个额外信息区都由插槽插入

分析: 可拓展性最高,但是使用者需要自己编写整个信息区的html和css

方案二: 额外信息区分为四个插槽,要插入哪个位置传哪个

分析: 相对来说扩展性不错,使用者至少不用布局了

具体代码设计

按钮区

按钮区完全没规律·,没有提供简便的可能性,直接插槽传入。

行为角度

行为点1: 右下角按钮区

该行为点已经完全交给插槽了。

行为点2: 点击商品区,不同的商品区域会有不同的需求,比如第一个商品点击无反应,第二个跳商家主页,最后一个跳商品详情。

行为点3:商品都有公共的异常状态点击效果,无论哪种商品,如果有异常状态都会像这样展示,点击后弹窗提示具体异常原因


总结

在封装一个业务组件的时候:

步骤-先分析ui,再分析行为

1,尽量的让使用者大多数情况下不用传太多props和插槽

2,写的时候思考一个事情.这个还能不能贴合业务做得更简便

3,一定要记得留拓展接口

4,行为记得两个事情,开关和回调

目录
相关文章
|
10天前
|
存储 人工智能 开发框架
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
Eliza 是一个开源的多代理模拟框架,支持多平台连接、多模型集成,能够快速构建智能、高效的AI系统。
103 8
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
|
3月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
5月前
|
JavaScript 前端开发 IDE
[译] 用 Typescript + Composition API 重构 Vue 3 组件
[译] 用 Typescript + Composition API 重构 Vue 3 组件
[译] 用 Typescript + Composition API 重构 Vue 3 组件
|
21天前
|
安全 数据挖掘 数据安全/隐私保护
国产CRM品牌巡礼:系统品牌的核心优势与特色
本文深度解析国产CRM系统的四大知名品牌:销售易、神州云动、销帮帮和天衣云。 销售易:中国领先的CRM解决方案提供商,提供全渠道获客、智能化销售流程及AIGC技术应用,赢得500强企业信赖。 神州云动:以PaaS+SaaS模式、灵活定制和行业解决方案著称,支持企业实现客户关系管理的数字化和智能化。 销帮帮:面向中小企业的实用型CRM系统,提供销售跟踪、客户视图等功能,提高销售效率和客户满意度。 天衣云:专注于云端部署,提供快速部署、高安全性的CRM解决方案,确保企业信息安全。 各品牌各有特色,企业应根据自身需求选择合适的CRM系统,以实现客户关系的全面管理,提升业务效率和客户满意度。
|
2月前
|
搜索推荐 数据库 UED
CRM系统源码|客户管理系统源码开发
CRM系统通过提供个性化的用户体验、提高生产力、改善客户体验和增加销售额来助力企业成长。集成CRM能自动化数据输入,减少管理时间,提高销售代表的效率。此外,CRM还能增强客户互动,降低跳出率,增加透明度,确保整个公司的协调合作。
38 5
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
49 2
|
2月前
|
机器学习/深度学习 人工智能 运维
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
电话机器人源码-智能ai系统-freeswitch-smartivr呼叫中心-crm
77 0
|
3月前
|
JavaScript 前端开发
Vue2整合TypeScript:借助vue-property-decorator以类模式编写组件
Vue2整合TypeScript:借助vue-property-decorator以类模式编写组件
214 3
|
3月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与最佳实践
【10月更文挑战第8天】深入理解TypeScript:类型系统与最佳实践
|
3月前
|
JavaScript 安全 开发工具
在 Vue 3 中使用 TypeScript
【10月更文挑战第3天】