四十五----组件库设计

2023-12-12 06:28
文章标签 设计 组件 四十五

本文主要是介绍四十五----组件库设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

组件库设计主要考虑几点。
有意义:

  • 命名准确,充分表意。
  • 参数准确,必要的类型检查。
  • 适当的注释
    通用性:
  • 不要耦合特殊的业务功能。
  • 不要包含特定的代码处理逻辑。
    ⽆状态,⽆副作⽤:
  • 状态向上层提取,尽量少⽤内部状态。
  • 解耦IO操作。
    避免过度封装:
  • 合理冗余。
  • 避免过度抽象。
    单一职责:
  • ⼀个组件只完成⼀个功能。
  • 尽量避免不同组件⻅相互依赖、循环依赖。
    易于测试:
    更容易的单元测试覆盖。

组件库设计主要有几大模块。

一、组件库架构选择----仓库管理

Multirepo
⼀个仓库内只⼀个项⽬,以⼀个npm包发布,适⽤于基础组件库。
优点

  • 项⽬简单,调试安装⽐较⽅便。
    缺点
  • 项⽬庞⼤时构建和发布耗时⻓。
  • 组件库使⽤时需整体引⼊,造成⼀定的资源浪费。(可通过es module⽅式解决)
    比如:antdsign

管理工具
git submodule
(git提供的一种管理子仓库的方案
可以批量管理和维护多个git repo
本质上是一个父repo维护了一份各个子repo 的清单
有坑: Git Submodule的坑
替代方案: git subtree

Monorepo
⼀个仓库内管理多个项⽬,以多个npm包⽅式发布,依赖集中管理,npm包版本可以集中管理,也可以 单独管理。通常适⽤于有⼀定关联的组件,但各组件需要⽀持单独的npm包发布和安装。
优点:

  • 共同依赖统⼀管理,版本控制更加容易,依赖管理会变的⽅便。
  • ⽀持组件的单独发布和单独构建。
  • 使⽤时可以单独引⼊。
    缺点:
  • 项⽬搭建复杂度⾼。
    比如react

管理工具:

  • lerna
  • yarn workspace
  • pnpm

二、代码规范

⼀个⾼质量的组件库,eslint和prettier是必须的,能够帮助我们统⼀整个仓库的代码规范。 常⽤的eslint配置:

"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
// 如果使⽤ts
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"prettier"

也可以使⽤业界成熟的eslint配置: @umijs/fabric
.eslintrc.js

module.exports = {extends: [require.resolve('@umijs/fabric/dist/eslint')],
};

.stylelintrc.js

module.exports = {extends: [require.resolve('@umijs/fabric/dist/stylelint')],
};

.prettierrc.js

const fabric = require('@umijs/fabric');
module<

这篇关于四十五----组件库设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483547

相关文章

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用