前端青训营-React-组件 | “朝闻道”知识分享大赛

小年华°Moon 2024-11-29 17:58:09

这是我参加朝闻道知识分享大赛的第130篇文章。

简介

组件:在工业品上,指具有标准接口和某种功能且可复用的标准零部件。在软件开发上,指封装好的可复用的程序“零部件”。

前端UI组件:“按钮”、“输入框”、“下拉选择”都是组件,组件和组件组合就变成了一个更复杂的组件。

组件库:一系列UI组件的合集

组件库特点:一致性、效率、协同

img

img

img

img

img

使用

快速上手

引入组件库:

img

按需加载:降低体积

img

img

通过CND使用:

img

主题定制

主题色:

通过C55进行样式覆盖或修改Less变量来修改颜色

img

img

img

组件定制:

img

Arco Pro:

img

img

DesignLab:

img

img

暗黑模式

img

img

img

img

国际化

语言国际化:

img

img

img

img

RTL视图:

img

img

Arco 组件库 RTL 从 0 到 1

img

ConfigProvider-全局配置组件默认属性

项目demo

img

img

img

开发

搭建业务组件库

考虑的问题:架构设计、技术方案、对外文档

  • 怎么打包组件库?
  • 产物应该是什么格式?
  • 如何在项目里使用?
  • 怎么本地开发预览?
  • 怎么保障质量?
  • 怎么展示 Demo?

架构设计:

img

  • 单包架构:一个代码仓库里所有组件打包成一个整体,发布出去一个 npm 包

    • 优点:公共代码易复用、展示更聚合,便于维护、引入一个包即可使用全部组件
    • 缺点:修改一个组件需要更新整个库、需要考虑按需加载

img

img

  • 多包架构:—个代码仓库包含多个组件代码,会发布出去多个 npm 包。

    • 优点:单独发包,升级灵活、在同一仓库下,便于代码管理、使用者无需考虑按需加载
    • 缺点:组件间相互依赖时,需要通过npm包引入、组合使用时需要安装每一个用到的npm包

img

img

技术方案:

  • 开发环境
    • 打包速度
    • 实时预览,如storybook
  • 样式方案
    • 样式方案:Less/Sass,CSS in JS,CSS等
    • 组件库换肤,样式定制等能力
  • 产物构建
    • 构建工具 webpack, rollup,vite,gulp 等
    • 产物格式:cjs,umd,es
  • 质量保证
    • 测试工具:jest, karma, mocha, enzyme, react- testing-library 等
    • 测试类型:单元测试,快照测试,截屏测试,e2e测试等

对外文档:

  • 文档部署
    • Demo 展示:Storybook,umijs等
    • 静态内容:markdown
  • 组件API提取
    • 手写
    • 自动提取:ts-docuemnt等
  • 版本日志生成

组件开发

什么是好的组件:

img

img

项目组织:

  • 语义化命名

    组件的命名应当具有语义,并且避免与基础组件冲突。同一团队/仓库下的业务组件,也可采用相同的命名前缀。

img

  • 包名和组件名最后一致

    NPM包名应当尽量与组件名保持一致,包含明确的使用场景信息。

img

  • 单独维护类型文件

    推荐将需要对外导出的TS类型维护在单独的interface.ts中,并将其在index.ts中导出。

img

组件设计:

  • 接口定义

    在为组件定义接口类型时,应继承原生DOM(或基础组件)属性,避免属性遗漏或重复声明。

img

  • 类名前缀统一

    组件使用特殊且统一的类名前缀,尽量降低与用户类名冲突的可能性。

img

  • 避免行内样式和 CSS Modules

    确保外部可通过类名进行样式覆盖。

img

  • 避免在JS中耦合CSS

    应尽量保证逻辑与样式的分离,确保用户可以分别引入JS和CSS文件,避免由于构建环境的不同导致的用户编译失败的问题。

img

  • 注意样式的按需加载

    在基于基础组件库如Arco进行业务组件的逻辑封装时,应注意按需引入所依赖的Arco基础组件的样式文件

img

案例:Guide Tip,在线demo源码地址

img

功能要点

  1. 控制引导气泡的出现
  2. 点击下一步/上一步时切换气泡卡片的内容
  3. 气泡卡片的位置跟随变动
  4. 在最后一步时,显示完成按钮

img

API定义

img

核心逻辑

  1. 显示弹出层:Arco Popover 组件
  2. 步骤切换:状态变量current 记录当前处于哪一步骤
  3. 弹出层始终指向对应的Button:实时获取目标节点的位置,更新弹出层指向。

img

快速托管

img

...全文
65 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
随着元宇宙概念兴起与虚拟数字人技术快速发展,虚拟主播、在线教育虚拟助教、元宇宙社交等应用场景对实时动作表情驱动系统提出更高需求。当前主流动作捕捉方案多依赖专业光学动捕设备或深度相机,设备成本高昂、部署复杂,难以在普通用户场景普及。本研究设计并实现一套基于普通单目摄像头的虚拟数字人实时动作表情驱动系统,旨在降低数字人内容生产门槛。系统采用Unity作为主开发引擎,结合Blender进行数字人模型构建与BlendShape表情系统制作,使用MediaPipe框架实现人脸关键点检测与人体姿态估计,通过C#脚本完成实时数据处理与渲染控制。系统包含五个关键模块:人脸关键点检测(MediaPipe Face Mesh提取468个关键点)、人体姿态估计(MediaPipe Pose识别33个骨骼关键点)、表情迁移映射、动作平滑优化(卡尔曼滤波与贝塞尔曲线插值消除抖动)、实时渲染(60fps流畅渲染,支持直播推流与视频录制)。实验结果表明,系统在普通笔记本上可实现60fps实时驱动,人脸关键点检测准确率达98.7%,人体姿态估计平均误差小于5像素,表情迁移相似度达92.3%。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论基础 第3章 系统架构设计 第4章 关键模块设计与实现 第5章 实验与结果分析 第6章 总结与展望 参考文献
内容概要:本文提出了一种基于蒙特卡洛模拟与拉格朗日松弛法的分散式优化策略,用于解决电动汽车充电站在分时电价机制下的有序充电调度问题。通过蒙特卡洛方法模拟电动汽车充电行为的随机性,生成多样化负荷场景,构建以降低电网负荷波动和用户充电成本为目标的优化模型;采用拉格朗日松弛法对耦合约束进行解耦,实现分布式求解,在保障用户隐私的同时提升计算效率。文中设计了详细的仿真场景,系统分析了该调度策略对电网负荷特性和用户经济性的影响,验证了所提方法在实际应用中的有效性与可行性。; 适合人群:具备电力系统运行、优化算法理论及Matlab编程能力的研究生、科研人员以及从事智能电网与电动汽车相关领域的工程技术人员。; 使用场景及目标:①应用于城市规模化充电站集群的有序充电管理,实现电网“削峰填谷”;②为电力公司制定科学合理的分时电价政策提供量化分析工具;③支撑智能电网中需求侧资源的分布式协同优化调度研究与系统设计。; 阅读建议:建议结合提供的Matlab代码深入理解算法实现流程,重点掌握蒙特卡洛场景生成机制与拉格朗日松弛迭代求解过程,可通过调整参数设置复现不同工况下的仿真结果,以深化对分散式优化机制与调度效果之间关系的理解。
内容概要:本文研究了基于阶跃响应的V-Tiger自动增益调整PID控制器优化方法,并提供了完整的Matlab代码实现。通过深入分析PID控制的核心性能指标与V-Tiger控制器的动态特性,提出了一种融合阶跃响应特征提取与多目标协同优化的自动整定方案,设计了具备自适应迭代校正能力的优化机制,有效提升了控制系统的响应速度、稳定性和抗干扰能力。文中系统阐述了整定原理、算法架构设计及性能验证流程,通过仿真实验充分验证了该方法在复杂工业控制场景下实现高精度参数自整定的可行性与优越性,为智能PID控制提供了可复现、可拓展的技术路径。; 适合人群:具备自动控制理论基础和Matlab编程能力,从事控制工程、自动化、电气工程等领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于需要高精度PID参数整定的工业控制系统中,如电机驱动、温度控制、电力电子变换器等;②为科研人员提供一种可复现、可扩展的智能PID整定方法,用于提升系统动态性能与鲁棒性;③作为教学案例帮助学生理解PID整定原理与现代优化算法的融合应用。; 阅读建议:建议读者结合文中的Matlab代码逐模块运行与调试,重点关注阶跃响应特征提取与增益优化策略的实现逻辑,同时可尝试将其应用于实际控制系统中进行对比验证,以深化对自动整定机制的理解。

1,041

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧