时至今日,对项目架构的设计判断仍是一项极为复杂的难题。每个人在启动项目之初,都会参考一系列不同的文章与博客,希望借此确定项目架构的具体开发方法。
给设计质量低下的项目“擦屁股”,可能要比设计好项目更加困难。
您的项目架构应该简洁且直观,这样当有新的开发人员接手管理时,才能够在理解数据跟踪及其背后体现的 UI 路径时不致遇上太多无法理解的问题。
人们使用的是架构而非一个个独立组件,因此架构中的各个组件应该只是独立的文件。
为什么我们的项目架构应该尽量强调简洁与直观?
下图所示,就是本文想要表达的基本观点。
项目的架构
下面,我们将通过一系列明确的流程帮助大家了解项目的结构设计方式:
组件越小,就越易于处理
将 UI 拆分成一个个小型组件。代码行(LOC)越少,我们对代码的掌控能力就越强,调试与必要时的更新也就越简单。大家可以尝试通过以下方式增强项目的架构:
辅助函数应该强大且中立
辅助函数应该与渲染逻辑区分开来。仅在组件需要时使用辅助函数,且一般应该进行声明。辅助函数的作用在于:
* 处理从服务器处接收到的数据以适应 UI 逻辑。
服务是数据间的链接
API 服务是指负责在参数特定的情况下,调用服务器以获取数据的代码。我们不应直接从 UI 逻辑当中调用服务。因为如果我们需要在多个位置实现相同的 API 调用,且端点、标题等会发生变更,那么对不同位置进行服务修改将变得非常困难。下面来看如何进行服务声明:
Config 是接入服务器的关键
Config 当中包含关于应用程序运行所在环境的具体配置。请确保将配置与实际代码库拆分开来。配置应当:
路由是保障 UI 使用体验的主要方式
路由决定着我们在 Web 应用程序当中需要实现的不同页面的 URL 格式或模式。在定义路由时,需要注意以下几点:
Static 文件是指未包含在逻辑当中的文件
Static 文件不同于 CSS、图像、js(很少变更)以及字体等文件。Static 文件(静态文件)应该:
* 根据其类型进行分组。
页面代表着 Web 应用程序当中的不同目标
作为来自 NextJS 中的概念,页面目录中的目录或文件,代表着路由路径的目的地。如此一来,当我们在破译路由并拆分出组件时,就能够轻松将路由与目的地关联起来。页面应该:
Graphql 是从服务器当中获取数据的数据查询语言
Graphql 要求查询格式利用特定键获取数据。这种查询语言的文件就好根据不同的查询与不同的文件保存在不同的目录当中。具体要求包括:
其它能够为 Web 应用程序提供助力的工具与技巧
这部分内容包括可用于启动应用程序、管理 build、管理电子表格以及管理所使用文件语法的不同工具。这些工具应包括: