组装式应用在前端行业的发展

简介: 近几年前端行业可以说是发生了翻天覆地的变化,虽然组件化开发一直都存在但是随着越来越多的优秀的前端框架和工具的出现,前端组件化开发变的越来越容易,进而前端组件化开发进入了高速发展的黄金时期。

什么是前端组件化

组件化并不是前端所特有的,组件化是一种编程思想,是一种拆分代码的方式。一些其他的语言或者桌面程序等,都具有组件化的先例。随着前端项目复杂度越来越高,组件化已经成为一种共识,它一方面提高了开发效率,另一方面降低了维护成本。组件化设计就是为了增加复用性,灵活性,提高系统设计,从而提高开发效率。但在前端领域,并没有很通用的组件模式,因为缺少一个大家都能认同的实现方式,所以很多框架 / 库都实现了自己的组件化方式。

前端组件化实践

目前对前端组件的理解是分层,针对不同的需求将组件分为不同的种类,这种分类是一种规范,而不是规定。基本上我们可以将组件分为四类:

  • 基础组件:用于构建页面的原子组件,如 Button、Input、Select、Form 等等,这类组件通常用于取代 HTML 的原生组件,不仅可以实现基本功能,更重要的是可以支持各种样式定制、事件绑定和换肤等等,基础组件库里比较著名的是 AntDesign 和 ElementUI,可以毫不夸张的说现在的前端项目没有不使用基础组件库的;
  • 业务组件:基于基础组件构建出的一些更复杂的、可重用的组件,比如二维码组件、搜索框组件等等,这些组件都有很强的业务特征,并且需要通过基础组件进行组装,但是项目中又会频繁出现,对于这类组件,通常可以单独发布一个 npm 包,方便不同项目间进行重复使用。
  • 区块:由业务组件构成的更复杂的组件,用于构建页面的某个功能,比如表格区块,会包含:查询条件、表格和翻页器
  • 模块:由区块构成的整个页面,用于快速构建整个页面

组件设计原则

一个组件的复杂度,主要来源就是自身的状态;即组件自身需要维护多少个不依赖于外部输入的状态。
组件开发中,如何将数据和 UI 解耦,是最重要的工作。组件开发过程中,时刻谨记、思考是否符合以下的原则,可以帮助你开发一个更完善的通用组件。

  • 单一职责
    你的组件是否符合只实现一个职责,并且只有一个改变状态的理由?如:fetch 请求和渲染逻辑,应该分离。因为 fetch 请求时会造成组件重新渲染,渲染时的样式或数据格式变化,也会引起组件重新渲染。单一职责可以保证组件是最细的粒度,且有利于复用。但太细的粒度有时又会造成组件的碎片化。单一职责组件要建立在可复用的基础上,对于不可复用的单一职责组件,我们仅仅作为独立组件的内部组件即可。
  • 通用性
    组件开发要服务于业务,为了更好的复用,又要从业务中抽离。复用一个组件时,即复用其职责,所以只有单一职责的组件,是最便于复用的,当一个组件错误地有多个职责时,就会增加复用时的开销。尽量避免代码重复,重复两次及以上的代码。
  • 封装
    良好的组件封装应该隐藏内部细节和实现意义,并通过 props 来控制行为和输出。减少访问全局变量:因为它们打破了封装,创造了不可预测的行为,并且使测试变得困难。可以将全局变量作为组件的 props,而不是直接引用。
  • 组合
    具有多个功能的组件,应该转换为多个小组件。单一责任原则描述了如何将需求拆分为组件,封装描述了如何组织这些组件,组合描述了如何将整个系统粘合在一起。
  • 纯组件和非纯组件
    非纯组件有显示的副作用,我们要尽量隔离非纯代码。将全局变量作为 props 传递给组件,而非将其注入到组件的作用域中。将网络请求和组件渲染分离,只将数据传递给组件,保证组件职责的单一性,也能将非纯代码从组件中隔离。
  • 可测试
    测试不仅仅是自动检测错误,更是检测组件的逻辑。如果一个组件测试不易于测试,很大可能是你的组件设计存在问题。
  • 富有意义
    开发人员大部分时间都在阅读和理解代码,而不是实际编写代码。有意义的函数、变量命名,可以让代码具有良好的可读性。
相关文章
|
21小时前
|
缓存 监控 前端开发
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
【4月更文挑战第30天】本文探讨了Flutter应用启动优化策略,包括理解启动过程、资源加载优化、减少初始化工作、界面布局简化、异步初始化、预加载关键数据、性能监控分析以及案例和未来优化方向。通过这些方法,可以缩短启动时间,提升用户体验。使用Flutter DevTools等工具可助于识别和解决性能瓶颈,实现持续优化。
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
|
21小时前
|
JSON 前端开发 JavaScript
快照测试在前端自动化测试中的应用
在前端自动化测试中,快照测试常用于检验组件渲染与布局。
|
21小时前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
21小时前
|
前端开发 JavaScript 搜索推荐
【专栏:HTML 与 CSS 前端技术趋势篇】HTML 与 CSS 在 Web 组件化中的应用
【4月更文挑战第30天】本文探讨了HTML和CSS在Web组件化中的应用及其在前端趋势中的重要性。组件化提高了代码复用、维护性和扩展性。HTML提供组件结构,语义化标签增进可读性,支持用户交互;CSS实现样式封装、布局控制和主题定制。案例展示了导航栏、卡片和模态框组件的创建。响应式设计、动态样式、CSS预处理器和Web组件标准等趋势影响HTML/CSS在组件化中的应用。面对兼容性、代码复杂度和性能优化挑战,需采取相应策略。未来,持续发掘HTML和CSS潜力,推动组件化开发创新,提升Web应用体验。
|
21小时前
|
前端开发 持续交付 开发工具
【专栏:工具与技巧篇】版本控制与Git在前端开发中的应用
【4月更文挑战第30天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并、回滚等操作,促进团队协作和冲突解决。在前端项目中,Git用于代码追踪、代码审查、持续集成与部署,提升效率和质量。优化协作包括制定分支策略、编写清晰提交信息、定期合并清理分支及使用Git钩子和自动化工具。掌握Git能有效提升开发效率和代码质量。
|
21小时前
|
前端开发 JavaScript 安全
【TypeScript技术专栏】TypeScript在微前端架构中的应用
【4月更文挑战第30天】微前端架构通过拆分应用提升开发效率和降低维护成本,TypeScript作为静态类型语言,以其类型安全、代码智能提示和重构支持强化这一架构。在实践中,TypeScript定义公共接口确保跨微前端通信一致性,用于编写微前端以保证代码质量,且能无缝集成到构建流程中。在微前端架构中,TypeScript是保障正确性和可维护性的有力工具。
|
21小时前
|
缓存 监控 前端开发
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
【4月更文挑战第30天】本文探讨了Flutter应用的性能调优策略和测试方法。性能调优对提升用户体验、降低能耗和增强稳定性至关重要。优化布局(避免复杂嵌套,使用`const`构造函数)、管理内存、优化动画、实现懒加载和按需加载,以及利用Flutter的性能工具(如DevTools)都是有效的调优手段。性能测试包括基准测试、性能分析、压力测试和电池效率测试。文中还以ListView为例,展示了如何实践这些优化技巧。持续的性能调优是提升Flutter应用质量的关键。
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
|
9月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
98 0
|
9月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
68 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置
|
9月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
57 0