La estructura de carpetas que uso en react - sábado, 24 de febrero de 2024

Cada quien estructura las carpetas como guste, pero es a si como yo las hago

tags: reactcode

La estructura de React

rayollnes_blog_react

Cada quien estructura las carpetas como le gusta o basado en sus necesidades; hoy te voy a contar cómo suelo estructurar mis carpetas.

En este ejemplo, tomaré como referencia la estructura de carpetas de la página de Zeew Space.

Carpetas principales

Las carpetas principales son las que me guían en el orden de mi estructura. Obviamente, hay carpetas que pueden ser opcionales o debemos incluir aunque no lo veamos en este ejemplo.

src
├───components
├───context
├───hooks
├───pages
├───store
├───styles
├───types
└───utils

Components

Y te estarás preguntando, ¿qué son las utilidades? Supongamos que estamos usando fechas, y estas fechas tienen un formato, ya sea una cuenta regresiva o tiempo relativo, algo estilo “hace 3 minutos”. Pues bien, eso lo pongo en un componente porque podría usarlo en otros lugares en caso de necesitarlo. Es aquí donde me refiero a “Componentes de utilidad”.

components
│   ├───layouts
│   ├───ui
│   │   ├───accordion
│   │   ├───cards
│   │   ├───dropdown
│   │   ├───input
│   │   ├───modal
│   │   ├───tabs
│   │   ├───textarea
│   │   └───toggle-group
│   └───utils

Context

Hooks

Pero muchas veces, creamos hooks personalizados basados en nuestras necesidades, como este ejemplo:

import { useState, useEffect } from 'react';

export const useCountdown = (endDate: Date | string) => {
    // ... (código del hook)
};

Este es un hook personalizado para tener una cuenta regresiva; le pones la fecha y este empieza a hacer su magia.

Pages

├───pages
│   ├───ajustes
│   │   ├───compras
│   │   └───conexiones
│   ├───blogs
│   ├───cursos
│   │   └───[slug]
│   │       └───clase
│   │           └───[id]
│   ├───eventos
│   ├───login
│   ├───mis-cursos
│   ├───register
│   └───user

Store

Styles

Types

Utils

Y si te preguntas qué son los “MOCKS”, es un JSON de ejemplo de lo que nos mandaría la API, así evitamos hacer peticiones a la API, ya sea para evitar sobrecargarlo por cada reinicio al momento de editar o porque tiene un sistema de autenticación y para evitar logeos o pérdida de datos por sesión. Nos ayuda bastante.

└───utils
    ├───CONSTANTS
    └───Mocks

En conclusión

Esta es la estructura que suelo usar. Tuve que enseñarle al equipo cómo estructurar el proyecto, ya que saben tocar código, pero hubo problemas al tener demasiadas carpetas o archivos, o se volvió complicado entender dónde está cada cosa.

Al final, cada quien es libre de estructurarlo como guste. En lo personal, creo que si alguien que no ha tocado el proyecto se une y solo con ver la estructura sabe dónde está cada cosa, considero que es una buena estructura.