如何构建更简洁的前端架构?

news/2024/7/5 2:13:32

目录

为什么需要前端架构?

那么,前端架构是什么样的呢?

使用了哪些层?

那么,这种架构会出什么问题呢?

我们应该如何避免这些错误?

哪些原则应适用于组件?

Anti-Patterns 反模式

总结

介绍一款Java+Springboot+Vue的前端框架

 

干净的前端架构,围绕这个话题有很多原则:

SOLID、KISS(保持简单明了)、DRY(不要重复自己)、DDD(领域驱动设计)等等。

为什么需要前端架构?

功能性和非功能性的要求不仅应该在后端应用,还应该在前端应用。因此,有了前端架构,我们就能满足业务需求。此外,我们能够更好地理解项目的复杂性,从而降低项目的风险、时间和成本。然而,作者认为,前端架构的最有价值的原因是任何项目的可维护性和可扩展性。

那么,前端架构是什么样的呢?

根据作者的经验,大多数时候都使用分层架构。但是,也会有一些项目采用了六边形架构。

下图简单地描绘了一个TripAgency项目。

使用了哪些层?

  • API:由 Open-API 生成器生成的DTO和服务
  • 服务:包括映射器(DTO到前端模型,反之亦然)和使用 REST 端点与 API 通信的服务
  • 存储:包含从服务层检索到的所有数据
  • Booking:包括模型和组件在内的领域。智能组件( Smart-Components)直接与商店互动,而哑组件(Dumb components)只是可以在多个上下文中应用的组件,因此要简单得多。

那么,这种架构会出什么问题呢?

那么,如果没有定义规则,开发人员就可能直接在其组件中使用 DTO,或者在没有存储的情况下与服务层通信。或者更糟糕的是,哑组件会与服务层对话。

我们应该如何避免这些错误?

只需定义一些规则来防止这种情况发生即可。最常见的方法之一就是在项目中引入 Bit 或 Nx。

什么是 Bit?什么是 Nx?

Bit 和 Nx 是功能强大的开源构建系统,可提供用于提高开发人员工作效率、优化 CI 性能和维护代码质量的工具和技术

因此,在使用 Bit 或 Nx 时,我们可能会应用依赖规则。因此,如果使用了错误的层,开发人员就会出错。

我们可以将一些 DDD(域驱动设计)概念应用到我们的 Booking 域中。因此,我们将预订域划分为一些子域。每个子域都有自己的边界上下文和泛在语言。如下图所示。

每个子域使用分层架构,这些子域之间的交互使用 API。功能包括智能组件和服务、用户界面(UI)、哑组件、域模型和 Util 所有实用功能,这些功能都在此边界上下文中使用。我们已经很接近了,但还没到那一步。仅有架构是不够的,底层组件和业务逻辑也必须使用清洁代码原则。因此,让我们放大功能层和用户界面层。

哪些原则应适用于组件?

首先是 SOLID 原则。每个组件必须只有一个责任(单一责任原则)。使用组合而非继承(开放-封闭原则)。不要强迫组件实现不合适的接口,这意味着并非所有方法都有意义(接口隔离)。

其次,在将业务逻辑应用到组件、服务或 Util 时,不要忘记 KISS 原则。代码要尽可能简短。为什么要这样做呢?更简单的代码更容易维护。

第三,尽量不要重复(DRY 原则)。将常用逻辑移至实用工具或服务中。

注:这些原则可以通过使用 Bit 轻松实现。在 Bit 工作区内,我们可以独立构建、测试、版本控制和记录可重复使用的组件(函数、用户界面元素或数据模型),然后将其发布到 Bit 的组件共享平台,在该平台上,你(或其他人)可以轻松地将其导入到多个项目中。

听起来很有道理。然而,如何才能知道哪些是应该避免的呢?简而言之,什么是反模式?

Anti-Patterns 反模式

有一些比较常见的错误?

  • 导入不必要的库,增大捆绑包大小
  • 使用嵌套订阅
  • 在模板中添加业务逻辑
  • 未经测试的业务逻辑

所以,这些都是反模式。但如何确保代码的可维护性呢?大家可能都知道,业务逻辑会随着时间的推移而增长。简而言之,经常会听到以下说法。

代码有了历史性的发展。起初,它是 "干净代码"(Clean Code),但现在我们的代码已经无法像以前那样容易维护了。

是的,这是一个非常常见的问题。不过,以下简单的规则可以帮助我们保持可维护性。

  • 定义eslint规则
  • 使用stylelint
  • 测试业务逻辑
  • 构建小型可重用的组件
  • 使用ES6和Typescript功能

总结

本文介绍了一个简洁架构的例子,并概述了一些可以应用的原则。此外,还将 DDD 引入了前端架构。最后,介绍了创建组件和添加业务逻辑时的一些规则,希望这些代码能够保持可维护性。

不过,开发人员团队在进行代码审查和添加新功能时必须具备较高的标准,否则清洁架构可能不足以保持可维护性。

希望这能帮助大家构建更简洁的前端架构。

介绍一款Java+Springboot+Vue的前端框架

这是一款基于SpringBoot+Vue的前后端分离的项目,麻雀虽小,五脏俱全,开箱即用!

JNPF开发平台的前端采用Vue.js,这是一种流行的前端JavaScript框架,用于构建用户界面。Vue.js具有轻量级、可扩展性强和生态系统丰富等特点,被广泛应用于构建单页面应用程序。

后端采用SpringBoot,这是一种基于Java的开源框架,用于简化Spring应用的初始搭建以及开发过程。SpringBoot通过自动配置和约定大于配置的原则,简化了Spring应用的配置和开发。此外,JNPF还采用MyBatis-Plus作为持久层框架,它是一个功能强大的MyBatis扩展,可以大大简化数据库操作的开发。

核心功能:表单引擎、可视化引擎、BI引擎、流程引擎、权限引擎、门户引擎、大屏引擎、接口中心、物联平台。

如果你现在对软件开发感兴趣,JNPF 可以提供了一个相当优秀的土壤。它是一个适合所有水平的用户的低代码学习平台,无论是有经验的开发者还是编程新手,都可以在这里找到适合自己的学习路径。

尝试自己开发一个应用!应用地址:https://www.jnpfsoft.com/?csdn


http://lihuaxi.xjx100.cn/news/1810782.html

相关文章

2024年(上海) 智慧电力博览会

2024年(上海) 智慧电力博览会 2024(Shanghai) Smart Power Expo 时间:2024年3月26-28日 地点:上海跨国采购会展中心 政策指导: 中华人民共和国国家发展和改革委员会 中华人民共和国工业和信息化部 上海城市数字转型应用促进中心…

深度学习人脸表情识别算法 - opencv python 机器视觉 计算机竞赛

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…

通信网络安全防护定级备案流程介绍(附流程图)

通信网络安全防护定级备案是拥有增值电信业务经营许可证并且有开展电信业务的企业要做的一件事情。刚接触这块的家人们在填报操作的时候可能对具体通信网络安全防护定级备案流程还不是很清楚,所以就给大家画张具体的流程图吧,可以更加直观的了解。 通信…

DDD落地:从美团抽奖平台,看DDD在大厂如何落地?

尼恩说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 谈谈你的DDD落地经验? 谈谈你对DDD的理解&#xff…

替换sql,某个字段特定容

要替换wp_posts表中的wp_posts.post_content字段中的特定文本,可以使用MySQL的UPDATE语句和字符串替换函数来实现。 sql:语句 UPDATE 表名 SET 字段名 REPLACE(字段名, 原本内容, 替换内容);请注意,执行这样的操作可能会对数据库产生较大的…

Git 提交竟然还能这么用?

大家好,我是鱼皮。Git 是主流的代码版本控制系统,是团队协作开发中必不可少的工具。 之前已经给大家分享过 Git / GitHub 的学习指南,感兴趣的同学可以先看视频了解:https://www.bilibili.com/video/BV1KZ4y1e7cG。 这篇文章&am…

QLabel中显示版权符号©

用html的方式显示实体字符(&#169)&#xff0c;如&#xff1a; m_pLab->setText(QString("< font color#e9a96f;>Copyright© 2013-2023 %1</font>").arg(copyright));

京东数据接口(京东运营数据采集):2023年10月京东空调品牌销售排行榜

鲸参谋监测的京东平台10月份空调市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年10月&#xff0c;京东平台空调的销量将近57万&#xff0c;同比增长约15%&#xff1b;销售额为16亿&#xff0c;同比增长约3%。由数据可知&#xff0c;…