当前位置:首页 > 科技  > 软件

一个合理的前端应用文件结构

来源: 责编: 时间:2024-06-28 17:15:51 293观看
导读在大型应用中,最关键且最具挑战性的方面之一就是拥有一个良好且合理的文件结构。在考虑通过微前端将代码库拆分成多个应用之前,可以遵循一些步骤来改善项目级别的架构,并在您考虑这一路径时使过渡更容易。我们的目标是应

在大型应用中,最关键且最具挑战性的方面之一就是拥有一个良好且合理的文件结构。在考虑通过微前端将代码库拆分成多个应用之前,可以遵循一些步骤来改善项目级别的架构,并在您考虑这一路径时使过渡更容易。dIA28资讯网——每日最新资讯28at.com

我们的目标是应用某种模块化方法,使代码库更容易理解,通过为各个功能设置边界,减少代码耦合和副作用。dIA28资讯网——每日最新资讯28at.com

默认项目结构

默认情况下,当使用流行的前端框架之一搭建新项目时,组件结构是扁平的,并且没有任何层次结构。dIA28资讯网——每日最新资讯28at.com

图片图片dIA28资讯网——每日最新资讯28at.com

本示例使用的是 Vue 的默认项目结构,但 React 对如何将文件放入文件夹也没有意见。dIA28资讯网——每日最新资讯28at.com

这个例子使用了 Vue 的默认项目结构,但 React 也没有对如何将文件放入文件夹提出意见。dIA28资讯网——每日最新资讯28at.com

  • assets:存储应用中使用的静态资产,如图像、字体和 CSS 文件。
  • components:包含可重用的 Vue 组件。推荐使用扁平层次结构。
  • main.js:作为应用的入口点,启用 Vue 并配置插件或附加库。
  • App.vue:表示应用的根组件,作为其他组件的容器并充当主要模板。

我们通过实践发现,对于大型项目,这种架构很快就会失控。需要某种模块化方法来轻松定位给定的文件,为各个功能设置边界,并避免组件的紧密耦合。dIA28资讯网——每日最新资讯28at.com

将应用分解成多个功能

将应用分解成多个功能任何大型应用都会被分解成多个独立的功能。识别它们并不总是容易和直接的,但经过一段时间和经验之后会变得更好。我们一起尝试将一个流行的应用分成多个部分作为练习。dIA28资讯网——每日最新资讯28at.com

图片图片dIA28资讯网——每日最新资讯28at.com

Twitter 的主页有很多内容。时间线是页面的核心,被许多功能环绕,如导航、推文创建部分、带有多个子组件的侧边栏、悬浮消息组件等。dIA28资讯网——每日最新资讯28at.com

图片图片dIA28资讯网——每日最新资讯28at.com

将构成这些功能的所有组件放在同一个文件夹中是不可维护的,即使使用 IDE 的快速查找选项,定位其中一个组件也会非常困难。dIA28资讯网——每日最新资讯28at.com

更精细的项目结构

从经验来看,更好和更全面的文件结构如下所示:dIA28资讯网——每日最新资讯28at.com

图片图片dIA28资讯网——每日最新资讯28at.com

  • components:所有跨整个应用使用的共享组件。
  • composables:所有共享的 composables。
  • config:应用配置文件。
  • features:包含所有应用功能。我们希望将大部分应用代码放在这里。稍后会详细说明。
  • layouts:页面的不同布局。
  • lib:应用中使用的不同第三方库的配置。
  • pages:应用的页面。
  • services:共享的应用服务和提供者。
  • stores:全局状态存储。
  • test:与测试相关的 mock、帮助程序、工具和配置。
  • types:共享的 TypeScript 类型定义。
  • utils:共享的实用函数。
  • assets:静态资源。

在项目根目录下运行以下命令以创建不存在的文件夹。dIA28资讯网——每日最新资讯28at.com

mkdir -p src/{components,composables,config,features,layouts,lib,pages,services,stores,test,types,utils,assets}

需要注意的三件重要事项:dIA28资讯网——每日最新资讯28at.com

Pages 文件夹:页面文件夹已经在上下文和构建工具(如 webpack 或 Vite)将创建的实际块方面进行了一些模块化。将所有页面放在一个地方非常有帮助,但其中的逻辑应保持最低限度。dIA28资讯网——每日最新资讯28at.com

Features 文件夹:为了更容易的维护和扩展,我们希望将大部分应用代码放在 features 文件夹中。每个功能文件夹应包含特定功能的领域代码。dIA28资讯网——每日最新资讯28at.com

共享内容:在一个理想的世界中,我们不应该有共享组件、composables、stores 和 services,所有内容都应该放在相应的功能文件夹中。不幸的是,在实际项目中,这无法避免,但我们应该提前计划,并在将内容添加到这些文件夹时格外小心。dIA28资讯网——每日最新资讯28at.com

Features 文件夹

正如前面提到的,我们的大部分应用应该放在 features 文件夹中,分为多个子目录。dIA28资讯网——每日最新资讯28at.com

图片图片dIA28资讯网——每日最新资讯28at.com

  • api:所有的 fetch 逻辑都放在这里。这将 API 和 UI 解耦。
  • components:特定功能的组件。
  • composables:特定功能的 composables。
  • stores:状态管理代码。多个子模块是预期的,实际上是被鼓励的。
  • types:特定功能的 TypeScript 类型定义。
  • index.ts:这是功能的入口点。它充当功能的公共 API,并且应该只导出应该为应用程序其他部分公开的内容。

上述的 index.ts 文件充当每个功能的公共 API。在从另一个领域导入内容时,应该仅通过此文件进行。这可以防止循环依赖,并且还可以更轻松地找到导入的来源。dIA28资讯网——每日最新资讯28at.com

// 不好的做法  
                

本文链接:http://www.28at.com/showinfo-26-97295-0.html一个合理的前端应用文件结构

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 互联网配置中心设计和实践,你学会了吗?

下一篇: RecyclerView的缓存机制及使用策略

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
Top