Lucia Aldana Castillo
Xavier Flores
bonita implementación.
David Estiven Aragón Andrade
¡Me parece fabuloso!
¿Cómo crear una arquitectura profesional para una landing page?
El desarrollo de una landing page efectiva implica una buena organización y componentización del código, lo que permite un mantenimiento a largo plazo y una estructura clara. A continuación, te mostraré cómo estructurar tu proyecto utilizando componentes tanto compartidos como específicos de página.
¿Cuál es el proceso para organizar componentes compartidos?
El primer paso es identificar los componentes que serán compartidos entre diferentes layouts o utilizados en un sistema de diseño común, como botones o tarjetas. Estos componentes deben ser ubicados en una carpeta llamada shared. Por ejemplo, el componente Header es un componente compartido que se clasificará dentro de esta carpeta:
// En la carpeta shared export const Header = () => { return ( <header> {/* Contenido del header */} </header> ); }; // Proxy para exportar export * from './Header';
¿Cómo organizar componentes específicos de la página?
Los componentes específicos de una página, como podría ser la landing page del home, se deben agrupar en una carpeta correspondiente al dominio dentro de components. Por ejemplo, para el home, podríamos tener una estructura como la siguiente con componentes Hero, MainProducts y Description:
home dentro de components.home, crear los componentes necesarios.Ejemplo de componente Description:
// Dentro de la carpeta home export const Description = () => { return ( <section> Descripción del producto </section> ); }; // Proxy para exportar export * from './Description';
¿Por qué emplear archivos proxy de exportación?
Utilizar un archivo index.ts como proxy para exportar componentes facilita las importaciones en otras partes del proyecto y mejora la legibilidad del código. Esto evita que las rutas de importación sean redundantes y permite cambios más sencillos:
// Archivo proxy: index.ts export * from './Footer';
Cuando se realice la importación, se hace de manera simplificada:
// Importando el Footer import { Footer } from '../components/shared';
Esta práctica también ayuda a que, si uno de nuestros componentes falla, el mensaje de error indique exactamente dónde está el error y cuál fue el componente que lo causó.
¿Cómo estructurar una página de manera limpia?
Es importante adoptar una metodología de bloques y componentes encapsulados, evitando código extenso en los layouts. A la larga, esta práctica facilita el mantenimiento y permite cambios o actualizaciones con menor riesgo de errores.
Por ejemplo, para la landing page:
import { Header, Footer } from '../components/shared'; import { Description } from '../components/home'; const HomePage = () => { return ( <> <Header /> {/* Otros componentes como Hero y MainProducts */} <Description /> <Footer /> </> ); }; export default HomePage;
Este enfoque similar a bloques de Lego para la organización del código no solo mantiene la estructura limpia, sino que también hace que el desarrollo sea más flexible y escalable.
Utilizar una arquitectura de componentes bien organizada es vital para el éxito del desarrollo web profesional. Te invito a que apliques estas prácticas para mejorar la calidad y mantenibilidad de tu código en tus proyectos. ¡Sigue adelante y continúa aprendiendo!
Lucia Aldana Castillo
Xavier Flores
bonita implementación.
David Estiven Aragón Andrade
¡Me parece fabuloso!
Brayan Domínguez Pinales
Hola!
¿Como se llama ese patrón de arquitectura?
Juan Carlos Montilla Sánchez
¡Buena pregunta!
Fernanda Aguilar Pfannschmidt
Cual es la diferencia entre usar proxies y barrels?
Juan Marcelo Panasiti
Consulta, si el componente footer estar dentro de una carpeta footer que tiene un archivo index que exporta el componente para facilitar la importacion.. por qué no directamente poner el componente Footer desntro de la carpeta shared?
Abilio Cubas
Me parece que separar cada elemento en carpeta sirve para tener mucho orden en las jerarquías y para tener la posibilidad de modificar elementos puntualmente en cierta parte de tu app, por ejemplo, agregar un layout específico.
Javier Damiani
Me parece una falta de respeto no decir cuál es el tema y qué extensión para los iconos usa el profesor u.u
Arturo Salas
solo se que usa el tema monokai dark, github Copilot (es de pago) y ESLint.
Ariel Ezequiel Biazzo Genua
(No se si esto funcionara en Next.js) pero en React, en vez de crear un component footer.tsx, la forma en la que evitamos tneer que escribir un proxy y a su vez poder saber de que componente estamos hablando sin tener que repetir su nombre 2 veces al llamarlo, es simplemte con esta arquitectura:
- /components/footer/index.tsx
Asi cuando deseo llamar a footer, lo hacemos de esta forma
import { Footer } from './components/footer'
Erick Edgardo Marroquin Escobar
Siento que así como de fácil es armar una aplicación con buen performance en Nextjs así de fácil es regarla y hacer algo que no tenga buen performance
Gonzalo Piñeiro Aleman Urquiza
Otra forma de organizar, es como lo utilizo,
shared/Footer/index.tsx (Componente) shared/Footer/handlers.ts (Metodos, utils, etc)
Jorge Alejandro Falcon Alvarez
ProfesorHola,
Tengo entendido qué, los Barrel files, como son el "index.ts" de Description, no son tan prácticos ni tan buena práctica.
Si alguien tiene mejor detalle, favor de aclarar.
Bryan Alejandro Zelada Lemus
Con Auto Barrel for VS Code, se hace más rápido y si agregan más componentes, también permite actualizar los archivos index.ts
Luis Eduardo Gamez Maldonado
Para quienes no ven la necesidad crear una carpeta para un componente que dentro tiene un archivo con el mismo nombre junto a un index.ts para exportarlo, es porque en proyectos grandes, un componente va acompañado de estilos, tests, declaraciones de tipos, etc. Y a la hora de exportar todo se canaliza por el index como un proxy, esto es así para anidaciones de archivos y carpetas en cualquier escala.
Juan David Vanegas Roldán
Es decir que en lugar de colocar el export { Footer } from './Footer' en el mismo archivo de Footer.tsx, tu recomiendas crear index.ts ?
Juan Carlos Montilla Sánchez
Es lo que trata de explicar, para evitar el estar exportando directamente el nombre del archivo sino que con el index exporta la carpeta y automáticamente están programadas para buscar el index y es por eso que sabe que mostrarnos
Gildder Guerrero Ramirez
En el curso se aborda cómo organizar y componentizar el código en Next.js. Aquí hay un resumen del proceso:
index.tsx en cada carpeta de componentes para simplificar las importaciones.Este enfoque promueve un mantenimiento y escalabilidad más sencillos en proyectos a largo plazo.
Miguel Angel Jaramillo Munoz
Tengo una duda que no me deja vivir 🙋🏻.
Si bien envolviendo nuestro layout con la anotación de "use client", va a envolver toda nuestra aplicación con un renderizado del lado del cliente, perdiendo el performance.
En ese orden de ideas...
Como se debería manejar a la hora de crear un estado global con redux por ejemplo?
Imagen de ejemplo practico:
Nayeli Melissa Ramírez Paredes
oficialmente mi profe fav de platzi, que bien explica los temas!
ANGEL LUGO
____src ____app ____features ____home ____components Home.tsx ____shared ____components ____Header ____Header.tsx ____Footer ____Footer.tsx index.ts ____utils
Thom Maurick Roman Aguilar
Feature-based Architecture
ANGEL LUGO
Hola yo lo hago de esta manera
src----- __app __shared
__components
__Footer
__Footer.tsx
__Header
__Header.tsx
index.tsx
Josue David
Me he quedado atascado en cierta forma, ya que me dice que mi tienda no tiene un tema. Creo que esto se debio de haber mostrado el como crearlo primero o como terminar de hacer todos los setting de nuestra tienda de shopify.
El curso me ha gustado y aunque graphql no lo he trabajado mucho, honestamente hay muchas partes donde falta comentar donde hizo cierto cambio, el por que de algunas cosas y dejar algun aviso donde podamos ver que si se da un error, en la siguiente clase se solucionara. Ya me ha pasado que por esto ultimo perdi hasta una hora pensando que en algo la heche a perder.
Para exportar los componentes, lo organizo de otra manera...
-components |__Footer |__index.tsx |__styles.module.ts |__index.ts ```En el index del Footer desarrollo el componente: ```js const Footer = () => {}; export defalut Footer; ```Y en el index de la carpeta componentes exporto todos los componentes: ```js export {deafult as Footer} from './Footer'; ```Entonces cuando necesito importar varios componentes de esta misma carpeta, tengo una sola línea de importación: ```js import {Footer, OtroComponente, OtroComponente} from './components';