【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,行为记得两个事情,开关和回调

目录
相关文章
|
8月前
|
XML JSON 运维
超兔CRM基于宜搭与多系统对接的归一结构分析与设计思考
本文探讨了超兔CRM团队在使用宜搭系统对接多外部系统过程中,面临的系统耦合高、接口冗余、维护成本上升等问题,提出通过引入中间表结构与业务对象模型抽象,实现接口归一化设计。该方案有效降低系统依赖,提升数据交互标准化程度,显著提高开发与维护效率,支撑业务长期扩展。
535 2
|
6月前
|
JavaScript 前端开发 安全
Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
每日激励:“如果没有天赋,那就一直重复”。我是蒋星熠Jaxonic,一名执着于代码宇宙的星际旅人。用Vue 3与TypeScript构建高效、可维护的前端系统,分享Composition API、状态管理、性能优化等实战经验,助力技术进阶。
Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
|
10月前
|
自然语言处理 JavaScript 前端开发
一夜获千星!已获 1.7k+,Art Design Pro:Vue3 + Vite + TypeScript 打造的高颜值管理系统模板,这个让后端小哥直呼救命的后台系统
Art Design Pro 是一款基于 Vue 3、Vite 和 TypeScript 的高颜值后台管理系统模板,已获 1.7k+ 星标。项目专注于用户体验与视觉设计,支持主题切换、多语言、权限管理及图表展示等功能,内置常用业务组件,便于快速搭建现代化管理界面。其技术栈先进,开发体验流畅,适配多设备,满足企业级应用需求。项目地址:[GitHub](https://github.com/Daymychen/art-design-pro)。
1856 11
|
11月前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
465 22
|
9月前
|
JavaScript 安全 编译器
TypeScript 类型守卫:让你的类型系统更智能
TypeScript 类型守卫:让你的类型系统更智能
|
JavaScript 安全 前端开发
Gzm Design:开源神器!用 Vue3、Vite4、TypeScript 革新海报设计,免费开源的海报设计器,主流技术打造,轻松高效
海报设计在各个领域都有着广泛的应用,无论是商业广告、活动宣传还是个人创意表达。今天要给大家介绍一款免费开源的海报设计器——Gzm Design,它基于最新的主流技术开发,为用户提供了丰富的功能,让海报设计变得轻松又高效。
717 64
|
12月前
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
266 10
|
JavaScript 数据安全/隐私保护
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
Vue Amazing UI 是一个基于 Vue 3、TypeScript、Vite 等最新技术栈开发构建的现代化组件库,包含丰富的 UI 组件和常用工具函数,并且持续不断维护更新中。另外,组件库全量使用 TypeScript,支持自动按需引入和 Tree Shaking 等,能够显著提升开发效率,降低开发成本。
803 5
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
|
存储 人工智能 开发框架
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
Eliza 是一个开源的多代理模拟框架,支持多平台连接、多模型集成,能够快速构建智能、高效的AI系统。
1723 8
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
|
安全 数据挖掘 数据安全/隐私保护
国产CRM品牌巡礼:系统品牌的核心优势与特色
本文深度解析国产CRM系统的四大知名品牌:销售易、神州云动、销帮帮和天衣云。 销售易:中国领先的CRM解决方案提供商,提供全渠道获客、智能化销售流程及AIGC技术应用,赢得500强企业信赖。 神州云动:以PaaS+SaaS模式、灵活定制和行业解决方案著称,支持企业实现客户关系管理的数字化和智能化。 销帮帮:面向中小企业的实用型CRM系统,提供销售跟踪、客户视图等功能,提高销售效率和客户满意度。 天衣云:专注于云端部署,提供快速部署、高安全性的CRM解决方案,确保企业信息安全。 各品牌各有特色,企业应根据自身需求选择合适的CRM系统,以实现客户关系的全面管理,提升业务效率和客户满意度。