Différences et similitudes entre Lumen et Laravel


181

J'ai lu la documentation et il semble que Lumen est Laravel avec moins de fonctionnalités. J'ai dû louper quelque chose. Je recherche un tableau de comparaison des composants et des fonctionnalités de Laravel et Lumen. Quelqu'un connaît-il les différences?


3
Cela ne semble pas juste. Laravel est un framework complet où Lumen est présenté comme un micro-framework dérivé de Laravel en sacrifiant une partie de sa configurabilité et de son extensibilité.
fijas du

3
Lumen est à peu près Laravel avec moins de fonctionnalités. C'est le but.
Frank


Réponses:


196

Mise à jour (5.2)

Avec la dernière version de Lumen (5.2), le Microframework se concentre sur les API sans état.
La documentation déclare:

Lumen 5.2 représente un changement sur la minceur de Lumen pour se concentrer uniquement sur le service d'API JSON sans état. En tant que tels, les sessions et les vues ne sont plus incluses dans le cadre. Si vous avez besoin d'accéder à ces fonctionnalités, vous devez utiliser le framework Laravel complet.


Réponse originale (<= 5.1)

Lumen est une question de vitesse . C'est plus rapide et peut gérer plus de demandes par seconde que Laravel.

Laravel est un framework qui rassemble de nombreux composants (composants tiers et propres à Laravels). Maintenant, Lumen utilise beaucoup des mêmes composants, mais réduit au minimum le processus de démarrage. On pourrait dire que c'est une "colle différente", les composants (et donc beaucoup de fonctionnalités) sont pour la plupart les mêmes.

L'amélioration des performances est obtenue en supprimant une partie de la flexibilité du framework en termes de configuration et en modifiant le processus de démarrage par défaut.

En outre, d'autres fonctionnalités sont désactivées par défaut et doivent être activées avant de pouvoir être utilisées. Par exemple: Façades (comme DB::table())
Vous devez d'abord décommenter cette ligne bootstrap/app.phppour les activer:

// $app->withFacades();

Il en va de même pour les fichiers d'environnement Dotenv et Eloquent.

Pour le routage, Lumen utilise nikic / FastRoute au lieu du routeur Symfonys car il fonctionne beaucoup mieux et donne au micro-framework un autre coup de pouce.

A part ça, à peu près tout est pareil qu'à Laravel.

Bonnes lectures sur Lumen


7
Serait-ce aussi rapide que nous commencions à supprimer les commentaires pour récupérer des fonctionnalités?
Sam Dark

1
@SamDark Évidemment, cela deviendra un peu plus lent avec chaque fonctionnalité que vous activez. Mais ce sera toujours assez rapide puisque les fonctionnalités désactivées ne sont qu'une partie des optimisations de performances
lukasgeiter

Ainsi, le benchmark ne reflète pas les frais généraux dans les applications réelles et dans les applications réelles, il sera plus élevé. D'ACCORD.
Sam Dark

1
@SamDark Ce billet de blog explique comment il a été évalué. Comme vous pouvez le voir, l'application de test renvoie simplement "Hello World" sans utiliser de modèles ou d'autres fonctionnalités du framework, donc les performances dans une application réelle seront plus lentes (bien que pas sensiblement dans la plupart des cas. Votre application sera toujours ridiculement rapide)
lukasgeiter

@lukasgeiter donc si je comprends bien, si je construis une application Ionic avec une API RESTful Laravel, il serait plus logique d'utiliser Lumen?
mtpultz

45

Lumen n'est pas conçu pour remplacer Laravel, mais plutôt un framework plus spécialisé (et dépouillé) conçu pour les micro-services et les API. Il a supprimé des fonctionnalités inutiles pour une API telles que les sessions HTTP et les cookies, et a également limité le nombre d'options de configuration. Prêt à l'emploi, Lumen a sacrifié la flexibilité de Laravel pour la vitesse.

Cependant, vous pouvez ajouter des composants Laravel à Lumen pour l'étendre, afin qu'il puisse être utilisé pour plus que de simples micro-services et API. Cependant, si votre objectif est d'étendre Lumen pour qu'il devienne un site Web, vous pouvez également utiliser Laravel à la place.

Ils ont également différents cas d'utilisation. Lumen et Laravel sont censés travailler ensemble. Pour que les API et les services soient fréquemment appelés, utilisez Lumen. Pour les applications destinées aux utilisateurs, utilisez Laravel.


Cette réponse est tirée d'un article de blog que j'ai écrit qui explique la différence entre Lumen et Laravel.


Autant que je sache, les cookies, les sessions, etc. sont toujours là. Cependant, ils seront chargés paresseusement et n'affecteront vraiment les performances que lorsqu'ils sont utilisés.
lukasgeiter

Lumen est maintenant mon cadre préféré. Je n'utilise pas Eloquent (ni aucun ORM), donc Lumen me va très bien.
prograhammer

2
Disons que je construis une application Web et décide d'écrire une API pour séparer davantage la logique (et permettre facilement des applications tierces). Serait-ce une bonne pratique d'écrire l'API avec Lumen et d'écrire le site Web avec Laravel?
Tyler Crompton

C'est un remplacement. C'est Laravel avec un routeur différent. En fait, rien n'a été supprimé - juste rendu facultatif. Il n'y a aucune raison légitime d'utiliser Laravel lorsqu'un Laravel (Lumen) supposément plus rapide est disponible.
Rick Jolly

14

Citation de Matt Stauffer

Lumen a la même base que Laravel et plusieurs des mêmes composants. Mais Lumen est conçu pour les microservices, pas tellement pour les applications destinées aux utilisateurs (bien qu'il puisse être utilisé pour n'importe quoi.) En tant que tel, les subtilités du frontend comme Bootstrap et Elixir et le bootstrap d'authentification et les sessions ne sont pas activés dès la sortie de la boîte, et il y a moins de flexibilité pour étendre et modifier les fichiers d'amorçage.

Vous pouvez en lire plus ici


4
De plus, Lumen n'utilise pas le composant Routage de Symfony. Au lieu de cela, nikic / fast-route est utilisé pour de meilleures performances.
Limon Monte

La configuration de Matt Stauffer pour Laravel va à l'encontre de l'objectif de l'interface utilisateur Bootstrap par défaut dans Laravel de toute façon, et comme pour Elixir, c'est npm installdonc pas complètement prêt "prêt à l'emploi", je dirais. On n'y perd donc pas grand-chose en passant à Lumen. Dans Lumen, je viens de créer un package.json et npm installer Elixer, et installer bower et c'est fait ...
Prograhammer

Cependant, après avoir utilisé Lumen, je peux vous dire qu'il y a des frustrations. Jusqu'à présent, j'ai découvert que la plupart des requêtes / routages / helpers sont incomplets par rapport à ce qui est disponible chez Laravel. Par exemple, vous ne pouvez pas faire un redirect()->intended. J'espère que Lumen rattrapera son retard dans ces domaines. J'aime vraiment un Laravel sans ORM (Eloquent) et donc Lumen me plaît beaucoup.
prograhammer

2
@prograhammer, je ne pense pas que cette fonctionnalité particulière sera jamais incluse dans Lumen. Je pense que cela nécessiterait une session que Lumen supprime intentionnellement. De plus, je ne vois pas beaucoup d'utilité redirect()->intended()avec une API, ce sur quoi Lumen se concentre.
Tyler Crompton

1
Lumen est pour APIS pas pour les frontends
Lakin Mohapatra

4

Le microframework Lumen est une version légère du framework full-stack Laravel. Lumen utilise la syntaxe et les composants Laravel, et peut être «mis à jour» facilement vers Laravel.

Lumen est un framework plus spécialisé (et simplifié) conçu pour le développement de microservices et le développement d'API. Ainsi, certaines des fonctionnalités de Laravel telles que les sessions HTTP, les cookies et la création de modèles ne sont pas nécessaires et Lumen les supprime, en conservant l'essentiel - le routage, la journalisation, la mise en cache, les files d'attente, la validation, la gestion des erreurs et quelques autres.


1

Pourquoi Lumen?

Lumen est la solution parfaite pour créer des micro-services basés sur Laravel et des API ultra rapides. En fait, c'est l'un des micro-frameworks les plus rapides disponibles. Il n'a jamais été aussi simple d'écrire des services incroyablement rapides pour prendre en charge vos applications Laravel. Doc

Lumen est un framework pour créer des API, qui serviront essentiellement des réponses JSON pour vos demandes. C'est tout.

Ces types d'applications sont généralement appelés services Web .

Depuis la mise à jour de Lumen 5.2, il ne prend pas en charge les vues laravel, les sessions, etc. pour cela, vous devrez passer au framework laravel complet.

Certains composants du framework Laravel sont échangés avec d'autres packages en faveur des performances. vérifiez-les ici

Exemples de scénarios où l'on peut considérer Lumen

  • Vous voudrez peut-être ouvrir certaines fonctionnalités d'une application à d'autres développeurs via l'API
  • Votre application doit prendre en charge à la fois les applications Web et mobiles, alors il sera parfait pour stocker les données dans une base de données enveloppée dans l'API Lumen.
  • Lorsque vous considérez l'évolutivité comme un point important, vous pouvez avoir besoin de lumen

-1

La principale différence entre laravel et lumen est que Laravel peut avoir des commandes artisanales, ce que la lumière n'a pas.


Ce n'est pas vrai, ou du moins pas à jour. Je ne sais pas grand-chose sur les anciennes versions, mais j'ai installé lumen 7.x et j'ai des commandes artisanales
Jonas Merhej
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.