División de Código con Webpack y Micro Frontend en React
Resumen
¿Cómo dividir una aplicación React en componentes separados usando Webpack?
La clave para mantener un proyecto React escalable es dividirlo en componentes modulares. Esto no solo mejora la organización, sino que también facilita trabajar de manera independiente en diversas partes del proyecto. Podemos aprovechar herramientas como Webpack para manejar múltiples aplicaciones de manera eficiente. A continuación, te mostraré cómo estructurar nuestras aplicaciones usando este enfoque.
¿Qué es necesario para empezar?
Antes de dar los pasos, es vital entender algunos conceptos básicos:
Micro Frontends: Esta metodología permite crear piezas de la interfaz de usuario divididas en aplicaciones menores que funcionan de manera independiente.
Webpack: Es una herramienta esencial para empaquetar módulos de JavaScript y nos ayuda a administrar diferentes configuraciones.
¿Cómo configurar un header como aplicación separada?
Crear una carpeta de aplicación independiente:
En nuestro proyecto, dentro de la carpeta src, creamos una nueva llamada header.
Organizar los archivos dentro de la nueva carpeta:
En header, añadimos un archivo index.js como punto de entrada de la aplicación.
Creamos una subcarpeta components dentro de header y un archivo App.jsx para nuestro componente principal.
Asegúrate de que Webpack separe correctamente los recursos utilizando chunkFilename.
¿Cómo verificar si la configuración es correcta?
Para verificar que todo está correctamente configurado, seguiremos estos pasos:
Inicializar el entorno de desarrollo:
Corre el comando npm run start en la terminal para activar el servidor de desarrollo.
Inspeccionar elementos en el navegador:
Usando herramientas para desarrolladores en el navegador, verifica que los componentes se renderizan según lo esperado. Busca elementos como Hello React from Header y asegúrate de que sean cargados desde bundles separados.
Esta metodología no solo asegura una estructura de proyecto sólida, sino que también permite que diferentes equipos trabajen en paralelo sin conflictos. ¡Sigue explorando nuevas técnicas y métodos para mejorar tus flujos de trabajo con React y Webpack!
Existe una clase del curso de Optimización web que lo explica: clase.
Podemos ver que el code splitting es dividir el código, es beneficioso el uso que se le quiera dar, ya que se puede implementar de diferentes formas.
-------------- ¿Qué hicimos en esta clase? ------------
1.- Creamos una carpeta Header dentro de src.
2.- Creamos dentro de Header:
- Un Archivo llamado index.js
- Una carpeta llamada components.
- Dentro de esa carpeta components se crea el archivo App.jsx
3.- en src/Header/components/App.jsx:
por fin alguien habla de micro frontends. Module federation es una feature interesante de webpack para los micro frontends.
Como seria la mejor forma de implementar el code splitting en un proyecto ? … dividir todo par componentes o por paginas? 😄
Depende mucho de tu lógica de negocio, lo más recomendado seria por páginas o secciones de tu desarrollo.
Una duda, con el code splitting se pueden combinar tecnologias como vue y react?
Wow... podrías probarlo y mirar si funciona, pero me parece que no, el CodeSplitting te permite importar el componente padre de una aplicación (de React por ejemplo) en otra aplicación, pero de repente si funciona, podrías hacer la prueba 👀
si tienen instalada la extension de snippets de react (ES7+ React/Redux/React-Native snippets) solo escriban rafce y enter, o tab para que se cree algo asi:
en este caso aparece const App, <div>App</div> y export default App porque mi achivo se llama App.jsx, la extensión reemplaza automaticamente ese valor según el nombre de tu archivo.
Preguntas:
ahora que tengo la práctica hecha 2 cosas pasaron
Mi react-router se rompió, porque ahora header está fuera de browserRouter, ya he creado otro browserRouter solo para header pero no funciona
Redux se ha roto, ya no puede acceder el header al estado porque ha quedado fuera de AppContext.Provider.
No encuentro la solución si quiero segur usando CodeSplitting con estas dos tecnologías.
Trata de llevar Header al BrowserRouter, ya que todo lo que este dentro podrá navegar entre las secciones. Puedes pasarme tu código y lo revisamos.
hola gente. estoy en búsqueda de los mejores recursos para hacer codesplitting desde webpack. Si tienes alguno déjalo aquí pls.
en otras noticias, al parecer React.lazy y React.Suspense hacen code splitting manteniendo vacíos los espacios hasta que son requeridos o: Es decir es Code Splitting desde React.
Puedes cumplir el reto usando los pero a mí me interesa saber hacerlo desde webpack también. Cómo lo hace Oscar me genera muchos problemas, más que nada en el la conexión del estado y del router.
También si recomiendan links de MicroFrontends estaría genial porque ese concepto y modo de trabajo no lo comprendo completamente.