Índice de contenido
Una de las características que más me gusta de Laravel es que por defecto viene integrado con Node.js. Esto significa que, en un solo proyecto, podemos tener:
- Un excelente framework del lado del servidor (Laravel).
- Node.js, que usualmente se emplea del lado del cliente (frontend).
Esto es especialmente útil en proyectos con Laravel + Inertia, donde podemos ver varios archivos clave:
- package.json: archivos de Node.js que se generan al crear cualquier proyecto con Node.
- composer.json: archivos de PHP manejados por Laravel, que controlan las dependencias del backend.
Si lo comparamos con otros frameworks web, como Django, Flask, FastAPI o CodeIgniter, todos son excelentes, pero no ofrecen esta integración nativa con Node.js.
Node y Laravel: la mejor combinación
Supongamos que quieres crear un proyecto completo con backend y frontend:
- En frameworks como Django o Flask, necesitarías crear dos proyectos independientes:
- El backend para la parte administrativa.
- Un proyecto frontend en Vue, React o similar, que consuma la API del backend.
Esto implica mantener dos proyectos separados y comunicarlos mediante REST APIs o tecnologías similares.
Con Laravel + Node.js, puedes evitar esto, ya que ambos conviven en un solo proyecto, facilitando el desarrollo y la integración.
CDN: opción para pruebas
También existe la opción de usar la CDN de Vue o React, pero perderías muchas ventajas del ecosistema de Node, como:
- Gestión de dependencias con NPM o Yarn.
- Compilación y optimización de assets.
- Uso de herramientas modernas de desarrollo frontend.
Por lo tanto, la CDN suele usarse solo para pruebas rápidas, no en proyectos serios.
Inertia.js: integración perfecta
Laravel ofrece integraciones como Inertia.js, que funciona como un envoltorio para usar Vue o React directamente desde Laravel. Esto permite:
- Fusionar backend y frontend en un solo proyecto.
- Evitar la necesidad de crear dos proyectos independientes.
- Mantener la lógica del backend en Laravel y trabajar el frontend con Vue o React de manera natural.
Según mi experiencia, esta integración ha ganado fuerza a partir de Laravel 12, donde al crear un proyecto se pregunta si quieres usar:
- Una instalación limpia de Laravel.
- Laravel + React.
- Laravel + Vue (con Inertia.js).
Con Inertia.js, se logra una integración perfecta, aunque también puedes optar por el enfoque tradicional con REST API, donde el backend y el frontend siguen proyectos separados pero comunicados mediante endpoints de API.
Ejemplo de integración
Con Inertia.js: Laravel devuelve un componente de Vue directamente desde el servidor usando Inertia::render().
En enfoque clásico: Laravel actúa como API, y Vue se consume mediante llamadas a los endpoints definidos en controladores agrupados, por ejemplo, en una carpeta API.
Esto demuestra la flexibilidad de Laravel: puedes elegir entre una integración completa en un solo proyecto o mantener un backend y frontend separados según tus necesidades.