现代前端架构介绍(第一部分):App是如何由不同的构建块构成的

news2024/9/20 14:46:05

远离JavaScript疲劳和框架大战,了解真正重要的东西

几周前,我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后,我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。废话不多说,以下是第一部分。

我们先来看看一个典型的网页吧👀

一个典型的网页

普通用户看到的是垂直和水平的条形图,一个主要内容区域,其中包含一个艺术品列表和一个图表,但对于前端开发人员来说,只有组件(VBarComponent、HBarComponent、OverviewComponent等等)。

从前端开发者的角度来看,网页

这些组件以树形结构排列,通常以根节点的形式出现,通常称为主组件。每个现代前端应用程序至少必须有一个组件(即主组件)。

这棵树是基于组件的架构的基础。从现在开始,我们将看到它如何驱动前端世界的各个方面。

分析树形

人们很快就会注意到,在同一分支上放置的组件会协同工作,为用户提供一个独立且连贯的功能。然而,由于不同的功能所提供的商业价值不同,其在界面上的展示方式也不同,因此同一分支上的组件形状也会有所不同。

这种多样性使得代码结构成为一个挑战,因为与后端不同,前端没有标准化的N层架构来帮助组织应用程序的文件。

n层架构的例子

这里的解决办法是基于功能而不是层类型来驱动。每个功能都将其组件放入一个子文件夹中,这样可以帮助开发人员了解在何处添加新组件,同时保持对分支任何可能形状的灵活性。

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f2f2f2"><span style="color:#242424">AppRepo
 │  
 ├──/Overview                      * Overview feature folder
 <strong>|</strong>   ├──/Components                * Components folder
 <strong>|</strong>      ├──/ListComponent          * List component
 │      └──/ChartComponent         * Chart component
 │
 ├──/Details                       * Details feature folder
     ├──/Components                * Components folder
        ├──SomeComponent           * Some component
        └──SomeOtherComponent      * SomeOther component</span></span></span></span>

虽然这是个直观的解决方案。

它很快遇到了一些限制。该如何处理技术组件?应该在哪里添加共享组件?

我们从“ feature ”这个词过渡到一个更通用、与功能领域耦合更少的词,我选择了“ brick ”。为什么呢?可以说我的应用程序是由砖块组成的。每个砖块都有特定的作用,但它们共同构成了应用程序的构建块。

在这个例子中,我的应用程序是由不同的砖块组成的:

  • 核心:包含应用程序启动所需的一切内容。它还为其他砖块(监控、日志记录等)提供了技术实用工具。
  • 共享:共享工具、小部件等所有在所有砖块中使用的元素,如提示框、错误对话框、排序函数等等。
  • 特点1, 2 & 3:与用户特定附加价值相关的功能域特征。
  • 功能A、B与C:也包含砖块功能,但它们的附加价值旨在为功能服务,而不是直接为应用程序服务,可以在一些功能砖块之间共享(例如功能A的情况)。

在本文中,我们了解到如何将网页转换为组件树。这种树形结构解释了我们的代码结构为何由功能驱动,以及我们如何将应用程序分割为具有独特角色的不同砖块。

我将在下一篇文章 《如何将功能架构分为三层》中继续介绍现代前端架构,深入探讨“砖块”的构成,并重点介绍更多与树形结构相关的问题及其处理方法。

 欢迎关注公众号:清晰编程,获取更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主机安装要点

1.选择主板时&#xff0c;一定要先看能不能与 CPU 匹配得上。 2.后缀带 K 的 CPU&#xff0c;因为支持超频&#xff0c;也最好搭配 支持超频 系列主板。 3.主板尺寸大小E-ATX 加大板、ATX 大板、M-ATX 小板、ITX 迷你板&#xff0c;符合机箱大小。 4.部分主板不带A-RGB,有灯…

OpenHarmony应用开发和Android应用开发区别

OpenHarmony 和 Android 是两个不同的操作系统平台&#xff0c;各自有其独特的开发环境和架构。以下是 OpenHarmony 应用开发与 Android 应用开发之间的主要区别&#xff1a; 1. 架构设计 OpenHarmony 微内核架构&#xff1a;OpenHarmony 采用微内核设计&#xff0c;核心功…

中科院2区SCI,稳定检索39年!不收版面费,审稿友好,最快6周录用,速投!

关注GZH【欧亚科睿学术】&#xff0c;第一时间了解期刊最新动态&#xff01; 中科院2区SCI&#xff0c;最快6周录用&#xff01; MACHINE LEARNING 是一本国际性期刊&#xff0c;由知名出版社SPRINGER出版&#xff0c;创刊于1986年&#xff0c;一直致力于发布报道高质量的机器…

2、 qt平台opencv引入,和工程搭建

1. 准备工作 opencv 编译&#xff0c; 参考&#xff1a; https://blog.csdn.net/qq_51355375/article/details/140857966vscode qt cmake工程创建及环境搭建&#xff1a; https://blog.csdn.net/qq_51355375/article/details/140752130 2. 引入opencv 头文件和链接库 2.1 配…

大数据信用报告查询注意事项

在当今这个数据驱动的时代&#xff0c;大数据信用报告已成为评估个人信用状况的重要参考。无论是申请贷款、租房还是求职&#xff0c;一份良好的信用报告都能为您加分不少。然而&#xff0c;在查询大数据信用报告时&#xff0c;有几点注意事项不容忽视&#xff0c;以确保您的信…

CAN通信编程

ubuntu使用虚拟can 1. sudo modprobe vcan //加载虚拟can模块 2. sudo ip link add dev can0 type vcan //添加can0网卡 3. ifconfig -a //查看can0 4. sudo ip link set dev can0 up //开启can0 5. sudo ip link set dev can0 down //关闭can0 6. sudo ip link del dev can0 /…

图数据库 Nebula Graph下载安装

1. 安装包下载解压 进入官网https://www.nebula-graph.com.cn/download&#xff0c;下载对应版本 tar -zxvf nebula-graph-3.8.0.ubuntu2004.amd64.tar.gz cd nebula-graph-3.8.0.ubuntu2004.amd64/2. 启动 Nebula Graph 服务 2.1 修改配置文件名以应用配置 将子目录etc中的…

用Python代码制作一个全自动扫雷(详细教程)

用PythonOpenCV实现了自动扫雷&#xff0c;突破世界记录&#xff0c;我们先来看一下效果吧。 中级 - 0.74秒 3BV/S60.81 相信许多人很早就知道有扫雷这么一款经典的游&#xff08;显卡测试&#xff09;戏&#xff08;软件&#xff09;&#xff0c;更是有不少人曾听说过中国雷圣…

开放式耳机哪个牌子质量好?热销的开放式耳机推荐

想要寻找一副舒适好听的开放式耳机可不是一件容易的事情&#xff0c;市面上数不胜数的品牌和型号让人眼花缭乱。不过&#xff0c;市面上的开放式耳机品牌繁多&#xff0c;质量参差不齐&#xff0c;究竟哪些牌子的产品更值得信赖呢&#xff1f;今天通过各大平台的推荐出了几款用…

常见的CMS漏洞

WordPress WordPress是⼀个以 PHP 和 MySQL 为平台的 ⾃由开源 的博客软件和 内容管理系统 。WordPress具 有插件架构和模板系统。截⾄2018年4⽉&#xff0c;排名前1000万的⽹站中超过30.6%使⽤WordPress。 WordPress是最受欢迎的⽹站 内容管理系统 。全球有⼤约30%的⽹站(7亿…

使用 宝塔面板 部署 springboot 和 vue

宝塔面板 部署 spring boot 和 vue 教程 代码仓库&#xff1a;还没弄 网站介绍 仿照别人项目做了个基于 springboot 和 vue 的网站&#xff0c;在腾讯云服务器上&#xff0c;通过 宝塔面板 部署了该项目。 项目的技术栈&#xff1a;Vue3、Vite5、Axios、Element Plus、Wange…

常回家看看之fastbin_attack

常回家看看之fastbin_attack 原理分析 fastbin属于小堆块的管理&#xff0c;这里说的fastbin_attack大多指glibc2.26之前的手法&#xff0c;因为自glibc2.26以后&#xff0c;glibc迎来了一位新成员tcachebin&#xff0c;它减少了堆的开销&#xff0c;使堆管理变得迅速而高效&…

【Android】安卓四大组件之ContentProvider知识总结

文章目录 Uri介绍组成 ContentResolver用法获取对象增删改查读取联系人获取权限配置ListView ContentProvider方法步骤1、注册2、继承onCreateUriMatcherinsertdeleteupdatequerygetType ContentProvider与ContentResolver Uri 介绍 统一资源标识符&#xff08;URI&#xff09…

nacos服务注册流程

一、客户端自动注册实例流程 1.首先客户端需要引入服务发现包 <groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.6.RELEASE</version> 2. NacosServiceRegist…

Linux中,MySQL存储引擎

存储引擎 在数据库中保存的是一张张有着千丝万缕关系的表&#xff0c;所以表设计的好坏&#xff0c;将直接影响着整个数据库。而在设计表的时候&#xff0c;最关注的一个问题是使用什么存储引擎。 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都…

【书生大模型实战营第三期 | 入门岛第1关-Linux基础知识】

学习心得&#xff1a;掌握InternStudio开发机与Linux基础 摘要 通过阅读这份详尽的InternStudio开发机与Linux基础教程&#xff0c;我对如何在云端算力平台上进行开发工作有了初步的了解。学习过程中&#xff0c;我不仅掌握了SSH远程连接和端口映射的技巧&#xff0c;还对Lin…

将后台传来的数据,转成easyui-tree所需格式

easyui 中文文档 EasyUI Tree组件需要一个包含特定属性&#xff08;如id, text, children等&#xff09;的JSON对象数组来初始化。 而后台返回的数据&#xff0c;它可能不是我们直接能拿来用的。 方式一&#xff1a;使用loadFilter函数处理来自Web Services的JSON数据。 $(#…

虚拟机处理yum缓存堆积问题

虚拟机处理yum缓存堆积问题 场景&#xff1a;虚拟机用的时间长了&#xff0c;网络不好&#xff0c;yum显示无法安装。此时我们因考虑到Yum软件包管理器的仓库配置文件地方对方太多而导致的问题。 解决方案&#xff1a; 一&#xff1a;首先检查虚拟机设置&#xff1a;确保设备…

东方古全艺藏委八一画展翰墨抒真情,当代艺术家挥笔颂军魂

在2024年这个意义非凡的夏日&#xff0c;随着“八一”建军节的脚步日益临近&#xff0c;一场旨在铭记历史、颂扬英雄、传承精神的书画盛宴——“中国东方文化研究会艺术品收藏交流委员会书画中心”举办的纪念中国人民解放军建军 97 周年书画邀请展&#xff0c;于8月1日在北京饭…

PTA—基础编程题目集(7-19)

7-19 支票面额 目录 题目描述 输入格式&#xff1a; 输出格式&#xff1a; 输入样例1&#xff1a; 输出样例1&#xff1a; 输入样例2&#xff1a; 输出样例2&#xff1a; 参考代码 总结 题目描述 一个采购员去银行兑换一张y元f分的支票&#xff0c;结果出纳员错给了…