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

目录
相关文章
|
5月前
|
JavaScript 前端开发 IDE
[译] 用 Typescript + Composition API 重构 Vue 3 组件
[译] 用 Typescript + Composition API 重构 Vue 3 组件
[译] 用 Typescript + Composition API 重构 Vue 3 组件
|
3月前
|
JavaScript 安全 开发工具
在 Vue 3 中使用 TypeScript
【10月更文挑战第3天】
|
5月前
|
JavaScript API
如何使用Vue 3和Type Script进行组件化设计
【8月更文挑战第16天】如何使用Vue 3和Type Script进行组件化设计
53 3
|
5月前
|
JavaScript 前端开发 安全
立等可取的 Vue + Typescript 函数式组件实战
立等可取的 Vue + Typescript 函数式组件实战
|
5月前
|
JavaScript 前端开发 安全
解锁Vue3与TypeScript的完美搭档:getCurrentInstance带你高效打造未来前端
【8月更文挑战第21天】Vue3的getCurrentInstance方法作为Composition API的一部分,让开发者能在组件内访问实例。结合TypeScript,可通过定义组件实例类型实现更好的代码提示与类型检查,提升开发效率与代码质量。例如,定义一个带有特定属性(如myData)的组件实例类型,可以在setup中获取并安全地修改这些属性。这种方式确保了一致性和减少了运行时错误,使开发更加高效和安全。
233 0
|
3月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
73 0
|
3月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
4月前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
65 0
|
2月前
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
54 6
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
52 2