欢迎光临散文网 会员登陆 & 注册

React文件夹结构 - 构建坚实的基础

2023-06-27 06:35 作者:晓枫Motivation  | 我要投稿

我们将深入探讨组织项目文件夹结构的关键方面。

关键是保持清晰且有组织的结构,以便轻松查找和管理文件。

精心设计的文件夹结构对于维护干净且可扩展的代码库、改善团队成员之间的协作以及提高整体开发效率至关重要。

React项目中常用的文件夹结构有多种类型,包括基于组件的结构、 基于特征的结构和基于领域的结构。

虽然有各种可用的文件夹结构选项,但“基于功能的结构”被认为是在 React 项目中组织代码库的最佳方法之一。

它通过基于特性或功能而不是技术层对相关文件和组件进行分组来促进模块化、可扩展性和可维护性。

(更|多优质内|容:java567 点 c0m)


以下是为什么通常首选基于特征的结构的一些原因:

1. 模块化和关注点分离 2. 代码可重用性 3. 可扩展性和团队协作 4. 更轻松的导航和理解 5. 维护和重构

让我们考虑一个社交媒体应用程序(例如Facebook应用程序)的示例,以更好地了解基于功能的结构在实践中如何工作。

我们需要创建基本文件夹,以构成基于功能的结构的基础。这些基本文件夹作为组织代码的起点,并为整个项目提供清晰的结构。

 src/
 ├── features/       // Grouping features of the application
 │   └── ...         // Other feature folders
 ├── shared/         // Shared elements used across multiple features
 │   ├── components/ // Reusable components
 │   ├── services/   // Shared services or API calls
 │   ├── hooks/      // Custom hooks
 │   ├── hoc/        // Higher-order components
 │   ├── slices/     // Redux slices for state management
 │   └── utils/      // Utility functions
 ├── assets/         // Storing static assets
 │   ├── images/     // Storing image files
 │   ├── fonts/      // Storing font files
 │   └── ...
 ├── styles/         // Global styles
 │   └── ...
 ├── App.jsx         // Entry point of the application
 └── ...             // Other necessary files and folders


在这个结构中,

  • features文件夹是您根据应用程序的不同特性或功能对代码进行分组的位置。每个功能都有自己的子文件夹。

  • 共享文件夹包含各种子文件夹,例如Components、services、hooks、hoc、slices和utils ,用于存储跨多个功能使用的共享元素  

    结合使用 useReducer 和 Redux Toolkit:状态管理的强大组合Sathish Kumar N ・ 5 月 12 日 ・ 阅读 3 分钟#react #reducer #redux #bestpractice

  • 资产文件夹用于存储静态资产,例如图像、字体或其他媒体文件。

  • styles文件夹是您可以放置全局样式或样式相关文件的位置。

  • App.jsx代表应用程序的主要组件或入口点。

在 Facebook 中,我们可能有“动态消息”、“个人资料”和“聊天”等功能。我们将在 features 目录中为每个功能创建单独的子文件夹。

让我们在“ News Feed ”下添加子文件夹。

 src/
 ├── features/
 │   ├── news-feed/        // Folder for the News Feed feature
 │   │   ├── components/   // Components related to the News Feed
 │   │   ├── containers/   // Containers or pages related to the News Feed
 │   │   ├── services/     // Services or API calls specific to the News Feed
 │   │   ├── utils/        // Utility functions specific to the News Feed
 │   │   ├── slices/       // Redux Slices to manage states specific to the News Feed
 │   │   └── ...
 │   └── ...               // Additional feature folders
 ├── ...  
 ├── App.jsx              
 └── ...  


在这个结构中,

Components文件夹包含特定于 News Feed 功能的 React 组件。这些组件负责用户界面的呈现和渲染。它们专注于应用程序的视觉方面并处理数据的显示。组件通过 props 接收数据并渲染JSX来定义UI 的结构和外观。

容器文件夹包含容器组件,也称为智能组件或连接组件,负责将应用程序的数据和逻辑与表示组件连接起来。它们处理数据获取、状态管理,并向表示组件提供数据和功能。

让我们深入了解容器文件夹。

 news-feed/
 ├── components/                      // Folder for presentation components
 │   └── ...                          // Additional components related to the News Feed feature
 ├── containers/                      // Folder for container components
 │   ├── news-feed-page/                // Folder for the News Feed page container
 │   │   ├── NewsFeedPage.jsx         // Container component for the News Feed page
 │   │   ├── NewsFeedPageStyles.css   // Styles specific to the News Feed page
 │   │   ├── NewsFeedPageUtils.js     // Utility functions specific to the News Feed page
 │   │   ├── useNewsFeedPage.js       // Custom hook for managing News Feed data, events and callbacks
 │   │   └── ...                      // Additional files related to the News Feed page
 │   └── ...  
 └── ...  


请检查“ React 中的关注点分离”以了解“ container ”文件夹下的上述文件分离。

React 和 React Native 中的关注点分离。Sathish Kumar N ・ 5 月 9 日 ・ 阅读 5 分钟#react #bestpractice #designpatterns #modularity

我们应用程序文件夹的最终结构如下所示,提供了一种组织良好的模块化方法来组织我们的代码库:

 src/
 ├── features/
 │   ├── news-feed/
 │   │   ├── components/
 │   │   │   ├── PostItem.jsx
 │   │   │   ├── CommentItem.jsx
 │   │   │   ├── LikeButton.jsx
 │   │   │   └── ...
 │   │   ├── containers/
 │   │   │   ├── news-feed-page/
 │   │   │   │   ├── NewsFeedPage.jsx
 │   │   │   │   ├── NewsFeedPageStyles.css
 │   │   │   │   ├── NewsFeedPageUtils.js
 │   │   │   │   ├── useNewsFeedPage.js
 │   │   │   │   └── ...
 │   │   │   ├── PostDetailsPage.jsx
 /* No need to create separate folder if
  container have less functionality and logic */
 │   │   │   └── ...
 │   │   ├── services/
 │   │   │   ├── newsFeedService.js
 │   │   │   └── ...
 │   │   ├── utils/
 │   │   │   ├── dateUtils.js
 │   │   │   └── ...
 │   │   ├── slices/
 │   │   │   ├── newsFeedSlice.js
 │   │   │   └── ...
 │   │   └── ...
 │   ├── profile/
 │   │   ├── components/
 │   │   │   ├── ProfileInfo.jsx
 │   │   │   ├── Avatar.jsx
 │   │   │   ├── ProfileSettings.jsx
 │   │   │   └── ...
 │   │   ├── containers/
 │   │   │   ├── ProfilePage.jsx
 │   │   │   └── ...
 │   │   ├── services/
 │   │   │   ├── profileService.js
 │   │   │   └── ...
 │   │   ├── utils/
 │   │   │   ├── validationUtils.js
 │   │   │   └── ...
 │   │   ├── slices/
 │   │   │   ├── profileSlice.js
 │   │   │   └── ...
 │   │   └── ...
 │   └── ...
 ├── shared/
 │   ├── components/
 │   ├── services/
 │   ├── hooks/
 │   ├── hoc/
 │   ├── slices/
 │   ├── utils/
 │   ├── assets/
 │   └── styles/
 │   └── ...
 ├── App.jsx
 └── ...


在各自的功能文件夹中组织组件有助于保持关注点的清晰分离,并使特定组件的查找和使用变得更加容易。它还提高了应用程序内代码的可重用性和模块化性。

注意:提供的文件夹结构只是一个示例,可能会根据您的项目的要求和偏好而有所不同。

请继续关注第 3 部分:组件结构 - 在 React 中构建可重用和可维护的组件!

快乐编码!😊👩‍💻👨‍💻

(更|多优质内|容:java567 点 c0m)


React文件夹结构 - 构建坚实的基础的评论 (共 条)

分享到微博请遵守国家法律