Diferencias y similitudes entre Lumen y Laravel


181

Leí la documentación y parece que Lumen es Laravel con menos funciones. Debo estar perdiendo algo. Estoy buscando una tabla de comparación de los componentes y características de Laravel y Lumen. ¿Alguien sabe las diferencias?


3
Eso no parece correcto. Laravel es un marco con todas las funciones donde Lumen se promociona como un micro marco derivado de Laravel al sacrificar parte de su configurabilidad y extensibilidad.
fijas

3
Lumen es más o menos Laravel con menos características. Ese es el punto.
Frank


Respuestas:


196

Actualización (5.2)

Con la última versión de Lumen (5.2), el Microframework se enfoca en API sin estado.
La documentación dice:

Lumen 5.2 representa un cambio en adelgazar Lumen para centrarse únicamente en servir API JSON sin estado. Como tal, las sesiones y las vistas ya no se incluyen con el marco. Si necesita acceso a estas funciones, debe usar el marco completo de Laravel.


Respuesta original (<= 5.1)

Lumen tiene que ver con la velocidad . Es más rápido y puede manejar más solicitudes por segundo que Laravel.

Laravel es un marco que une muchos componentes (componentes propios y de terceros). Ahora Lumen utiliza muchos de los mismos componentes, pero reduce al mínimo el proceso de arranque. Se podría decir que es un "pegamento diferente", los componentes (y, por lo tanto, muchas de las características) son en su mayoría los mismos.

La mejora del rendimiento se logra quitando algo de la flexibilidad del marco en términos de configuración y alterando el proceso de arranque predeterminado.

Además de eso, hay más funciones deshabilitadas de forma predeterminada y deben activarse antes de que puedan usarse. Como ejemplo: Fachadas (como DB::table())
Primero debe descomentar esta línea bootstrap/app.phppara habilitarlas:

// $app->withFacades();

Lo mismo ocurre con los archivos de entorno Dotenv y Eloquent.

Para el enrutamiento, Lumen utiliza nikic / FastRoute en lugar del enrutador symfonys porque funciona mucho mejor y le da al micro-marco otro gran impulso.

Aparte de eso, casi todo es igual que en Laravel.

Buenas lecturas sobre Lumen


77
¿Sería tan rápido si comenzamos a descomentar cosas para recuperar las funciones?
Sam Dark

1
@SamDark Obviamente, se volverá un poco más lento con cada función que habilite. Pero seguirá siendo bastante rápido ya que las funciones deshabilitadas son solo una parte de las optimizaciones de rendimiento
lukasgeiter

Por lo tanto, el punto de referencia no refleja la sobrecarga en aplicaciones reales y en aplicaciones reales será mayor. OKAY.
Sam Dark

1
@SamDark Esta publicación de blog explica cómo se comparó . Como puede ver, la aplicación de prueba simplemente devuelve "Hello World" sin usar modelos u otras características del marco, por lo que el rendimiento en una aplicación real será más lento (aunque no notablemente en la mayoría de los casos. Su aplicación seguirá siendo ridículamente rápida)
lukasgeiter

@lukasgeiter, así que entiendo que si estoy construyendo una aplicación Ionic con una API RESTful Laravel, ¿tendría más sentido usar Lumen?
mtpultz

45

Lumen no está diseñado para reemplazar a Laravel, sino que es un marco más especializado (y simplificado) diseñado para microservicios y API. Eliminó funciones innecesarias para una API, como sesiones HTTP y cookies, y también limitó el número de opciones de configuración. Fuera de la caja, Lumen sacrificó la flexibilidad de Laravel por la velocidad.

Sin embargo, puede agregar componentes de Laravel a Lumen para extenderlo, por lo que puede usarse para algo más que microservicios y API. Sin embargo, si su objetivo es extender Lumen para que se convierta en un sitio web, también podría usar Laravel.

También tienen diferentes casos de uso. Lumen y Laravel están destinados a trabajar juntos. Para las API y los servicios que se llaman con frecuencia, use Lumen. Para aplicaciones orientadas al usuario, use Laravel.


Esta respuesta está tomada de una publicación de blog que escribí que explica la diferencia entre Lumen y Laravel.


Hasta donde yo sé, las cookies, sesiones, etc. todavía están ahí. Sin embargo, tendrán una carga lenta y solo afectarán realmente el rendimiento cuando se usen.
lukasgeiter

Lumen es mi marco preferido ahora. No uso Eloquent (ni ningún ORM), por lo que Lumen me queda muy bien.
prograhammer

2
Digamos que estoy creando una aplicación web y decido escribir una API para separar aún más la lógica (y permitir fácilmente aplicaciones de terceros). ¿Sería una buena práctica escribir la API con Lumen y escribir el sitio web con Laravel?
Tyler Crompton

Es un reemplazo. Es Laravel con un enrutador diferente. Virually no se eliminó nada, solo se hizo opcional. No hay una razón legítima para usar Laravel cuando hay un Laravel supuestamente más rápido (Lumen) disponible.
Rick Jolly

14

Cita de Matt Stauffer

Lumen tiene la misma base que Laravel, y muchos de los mismos componentes. Pero Lumen está diseñado para microservicios, no tanto para aplicaciones orientadas al usuario (aunque se puede usar para cualquier cosa). Como tal, las ventajas de frontend como Bootstrap y Elixir y el bootstrap de autenticación y las sesiones no vienen habilitadas de fábrica, y hay menos flexibilidad para extender y cambiar los archivos de arranque.

Puedes leer más aquí


44
Además, Lumen no utiliza el componente de enrutamiento de Symfony. En cambio, nikic / fast-route se usa para un mayor rendimiento.
Limon Monte

La configuración de la glorieta de Matt Stauffer para Laravel anula el propósito de las cosas predeterminadas de la interfaz de usuario de Bootstrap en Laravel de todos modos, y en cuanto a Elixir, eso es npm installasí, no está completamente listo "listo para usar", diría. Por lo tanto, no perdemos mucho con respecto a estos, al cambiar a Lumen. En Lumen, acabo de crear un paquete. Json y npm instalan Elixer, configuran bower y listo ...
prograhammer

Sin embargo, después de usar Lumen, puedo decirte que hay frustraciones. Hasta ahora he descubierto que muchas de las solicitudes / enrutamiento / ayudantes están incompletas en comparación con lo que está disponible en Laravel. Por ejemplo, no puedes hacer un redirect()->intended. Espero que Lumen se ponga al día en estas áreas. Realmente me gusta un Laravel sin ORM (Eloquent), por lo que Lumen es muy atractivo para mí.
prograhammer

2
@prograhammer, no creo que esa característica en particular se incluya alguna vez en Lumen. Creo que eso requeriría una sesión que Lumen intencionalmente elimina. Además, no veo mucho uso redirect()->intended()con una API, que es en lo que se enfoca Lumen.
Tyler Crompton el

1
Lumen es para APIS no para frontends
Lakin Mohapatra

4

El microframework de Lumen es una versión ligera del marco de apilamiento completo de Laravel. Lumen utiliza la sintaxis y los componentes de Laravel, y se puede 'actualizar' fácilmente a Laravel.

Lumen es un marco más especializado (y simplificado) diseñado para el desarrollo de microservicios y el desarrollo de API. Por lo tanto, algunas de las características de Laravel, como las sesiones HTTP, las cookies y las plantillas, no son necesarias y Lumen las elimina, manteniendo lo esencial: enrutamiento, registro, almacenamiento en caché, colas, validación, manejo de errores y un par de otras.


1

¿Por qué lumen?

Lumen es la solución perfecta para construir microservicios basados ​​en Laravel y API ultrarrápidas. De hecho, es uno de los micro marcos más rápidos disponibles. Nunca ha sido tan fácil escribir servicios increíblemente rápidos para admitir sus aplicaciones Laravel. Doc

Lumen es un marco para construir API, que esencialmente servirá respuestas JSON para sus solicitudes. Eso es.

Este tipo de aplicaciones se conocen como servicios web en general .

A partir de la actualización de Lumen 5.2, no admite vistas de laravel, sesiones, etc ... para eso tendrá que actualizar a laravel framework completo.

Algunos componentes del marco de trabajo de Laravel se intercambian con otros paquetes a favor del rendimiento. revísalos aquí

Escenarios de ejemplo donde podemos considerar a Lumen

  • Es posible que desee abrir algunas características de una aplicación a otros desarrolladores a través de API
  • Su aplicación debe ser compatible con aplicaciones web y móviles, entonces será perfecto para almacenar los datos en una base de datos envuelta en API Lumen.
  • Cuando considera la escalabilidad como un punto importante, es posible que necesite luz

-1

La principal diferencia entre laravel y lumen es que Laravel puede tener comandos artesanales, que lumen no tiene.


Esto no es cierto, o al menos no está actualizado. No sé mucho sobre versiones anteriores, pero instalé lumen 7.xy tengo comandos artesanales
Jonas Merhej
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.