对于大规模应用来说,前端最关键也最具挑战性的程序方面之一就是良好且合理的文件夹结构。在考虑将代码库分解为使用微前端的文件多个应用之前,有一些步骤可以遵循,夹结以在项目级别改进架构,有意义的应用并使过渡更加容易,前端如果你曾经考虑过这条路径的程序话。
目标是文件应用某种模块化,通过在功能之间设定边界并最小化代码耦合和副作用,夹结使代码库更易于理解。
默认情况下,当使用某个流行的前端框架搭建新项目时,组件结构是平坦的,完全不遵循任何层次结构。
图片
我们已经深刻体验到,对于大型项目来说,这种架构很快就会失控。我们需要某种模块化,以便能够轻松定位特定文件,设定功能之间的边界,并避免组件之间的紧密耦合。
任何大型应用程序都会被拆分为多个独立的功能。识别它们并不总是容易和直接的,但随着时间和经验的积累,这个过程会变得更好。让我们一起尝试将一个流行的应用程序分解为各个部分作为练习。
图片
推特的主页内容丰富多彩。页面的核心部分是时间线,周围围绕着许多功能,如导航、推文创建区域、带有多个子组件的侧边栏、浮动消息组件等等。
图片
将构成这些功能的所有组件放在同一个文件夹中是无法维护的,即使使用IDE的快速查找选项,要找到其中的一个也会非常困难。
根据经验,一个更好且更全面的文件结构应该是这样的:
图片
需要注意的三件重要事项:
正如我们之前提到的,我们的应用程序的大部分应该存在于特性文件夹中,并分割成多个子目录。
图片
上述的 index.ts 文件作为每个功能的公共API。当从另一个领域导入某些内容时,应仅通过此文件进行。这应该可以防止循环依赖,并且也使得找到导入源更为容易。
# Bad 🚫 🚫 🚫import { UserProfile } from '@/features/profile/components/UserProfile.vue'# Good ✅ ✅ ✅import { UserProfile } from '@/features/profile'
我们可以通过使用 no-restricted-imports ESLint规则来执行这种模式。
rules: { 'no-restricted-imports': [ 'error', { patterns: ['@/features/*/*'], }, ], 'import/no-cycle': 'error', ...}
以特性为导向的架构是组织复杂项目的有效且经过实战检验的方式。它使我们能够将代码解耦为独立的模块,并随着应用程序变得更复杂而扩展。这将通过提高代码库的可预测性,减少调试时间并使新员工入职更容易,从而提升开发体验。
责任编辑:武晓燕 来源: 大迁世界 架构前端应用程序(责任编辑:知识)
5G概念集体走强 沪深两市有90家公司披露调研记录,环比增多15家
3000点以上基金乐看后市 “业绩+科技”成布局重点 指数仍有上冲空间
A股上半年“成绩单”:深成指累计涨幅逾26% 多家机构称估值处于中低位