Unterschiede und Ähnlichkeiten zwischen Lumen und Laravel

181

Ich habe die Dokumentation gelesen und es scheint, dass Lumen Laravel mit weniger Funktionen ist. Mir muss etwas fehlen. Ich suche eine Vergleichstabelle der Komponenten und Merkmale von Laravel und Lumen. Kennt jemand die Unterschiede?

Ranjeet Karki
quelle
3
Das scheint nicht richtig zu sein. Laravel ist ein Framework mit vollem Funktionsumfang, bei dem Lumen als von Laravel abgeleitetes Mikro-Framework angepriesen wird, indem ein Teil seiner Konfigurierbarkeit und Erweiterbarkeit geopfert wird.
Fidschas
3
Lumen ist so ziemlich Laravel mit weniger Funktionen. Das ist der Punkt.
Frank

Antworten:

196

Update (5.2)

Mit der neuesten Version von Lumen (5.2) konzentriert sich das Mikroframework auf zustandslose APIs.
In der Dokumentation heißt es:

Lumen 5.2 stellt eine Verschiebung beim Abnehmen von Lumen dar, um sich ausschließlich auf die Bereitstellung zustandsloser JSON-APIs zu konzentrieren. Daher sind Sitzungen und Ansichten nicht mehr im Framework enthalten. Wenn Sie Zugriff auf diese Funktionen benötigen, sollten Sie das vollständige Laravel-Framework verwenden.


Ursprüngliche Antwort (<= 5.1)

Bei Lumen dreht sich alles um Geschwindigkeit . Es ist schneller und kann mehr Anfragen pro Sekunde verarbeiten als Laravel.

Laravel ist ein Framework, das viele Komponenten zusammenklebt (Komponenten von Drittanbietern und Laravels eigenen Komponenten). Jetzt verwendet Lumen viele der gleichen Komponenten, reduziert jedoch den Bootstrapping-Prozess auf ein Minimum. Man könnte sagen, es ist ein "anderer Kleber", die Komponenten (und daher viele der Funktionen) sind größtenteils gleich.

Die Leistungsverbesserung wird erreicht, indem ein Teil der Flexibilität des Frameworks in Bezug auf die Konfiguration weggenommen und der Standardstartprozess geändert wird.

Außerdem sind weitere Funktionen standardmäßig deaktiviert und müssen aktiviert werden, bevor sie verwendet werden können. Als Beispiel: Fassaden (wie DB::table())
Sie müssen diese Zeile zuerst auskommentieren bootstrap/app.php, um sie zu aktivieren:

// $app->withFacades();

Gleiches gilt für Dotenv-Umgebungsdateien und Eloquent.

Für das Routing verwendet Lumen Nikic / FastRoute anstelle von Symfonys Router, da es eine viel bessere Leistung erbringt und dem Micro-Framework einen weiteren großen Schub verleiht.

Davon abgesehen ist so ziemlich alles das gleiche wie in Laravel.

Gute Lektüre über Lumen

lukasgeiter
quelle
7
Wäre es so schnell, wenn wir anfangen würden, Dinge zu kommentieren, um Funktionen zurückzubekommen?
Sam Dark
1
@SamDark Offensichtlich wird es mit jeder Funktion, die Sie aktivieren, etwas langsamer. Aber es wird immer noch ziemlich schnell gehen, da die deaktivierten Funktionen nur ein Teil der Leistungsoptimierungen sind
lukasgeiter
Der Benchmark spiegelt also nicht den Overhead in realen Apps wider und ist in realen Apps höher. OK.
Sam Dark
1
@SamDark In diesem Blogbeitrag wird erläutert, wie das Benchmarking durchgeführt wurde. Wie Sie sehen können, gibt die Testanwendung nur "Hello World" zurück, ohne Modelle oder andere Framework-Funktionen zu verwenden, sodass die Leistung in einer realen Anwendung langsamer ist (obwohl dies in den meisten Fällen nicht merklich ist. Ihre Anwendung ist immer noch lächerlich schnell)
lukasgeiter
@lukasgeiter so wie ich es verstehe, wenn ich eine ionische App mit einer RESTful Laravel API erstelle, wäre es sinnvoller, Lumen zu verwenden?
Mtpultz
45

Lumen soll Laravel nicht ersetzen, sondern ist ein spezialisierteres (und abgespecktes) Framework für Mikrodienste und APIs. Es wurden nicht benötigte Funktionen für eine API wie HTTP-Sitzungen und Cookies entfernt und die Anzahl der Konfigurationsoptionen begrenzt. Lumen hat die Flexibilität von Laravel für die Geschwindigkeit geopfert.

Sie können jedoch Laravel Komponenten Lumen hinzufügen , sie zu verlängern, so dass es kann für mehr verwendet werden als nur Mikro-Dienste und API. Wenn Sie jedoch Lumen zu einer Website erweitern möchten, können Sie stattdessen auch Laravel verwenden.

Sie haben auch unterschiedliche Anwendungsfälle. Lumen und Laravel sollen zusammenarbeiten. Verwenden Sie Lumen, damit APIs und Dienste häufig aufgerufen werden. Verwenden Sie für benutzerbezogene Anwendungen Laravel.


Diese Antwort stammt aus einem Blog-Beitrag, den ich geschrieben habe und der den Unterschied zwischen Lumen und Laravel erklärt.

d4nyll
quelle
Soweit ich weiß, sind noch Cookies, Sitzungen usw. vorhanden. Sie werden jedoch faul geladen und beeinträchtigen die Leistung nur dann wirklich, wenn sie verwendet werden.
lukasgeiter
Lumen ist jetzt mein bevorzugter Rahmen. Ich benutze kein Eloquent (oder ORMs), daher passt Lumen sehr gut zu mir.
Programmierer
2
Angenommen, ich erstelle eine Webanwendung und entscheide mich, eine API zu schreiben, um die Logik weiter zu trennen (und Anwendungen von Drittanbietern problemlos zuzulassen). Wäre es empfehlenswert, die API mit Lumen und die Website mit Laravel zu schreiben?
Tyler Crompton
Es ist ein Ersatz. Es ist Laravel mit einem anderen Router. Viral wurde nichts entfernt - nur optional gemacht. Es gibt keinen legitimen Grund, Laravel zu verwenden, wenn ein angeblich schnelleres Laravel (Lumen) verfügbar ist.
Rick Jolly
14

Zitat von Matt Stauffer

Lumen hat das gleiche Fundament wie Laravel und viele der gleichen Komponenten. Lumen wurde jedoch für Microservices entwickelt, nicht so sehr für benutzerbezogene Anwendungen (obwohl es für alles verwendet werden kann). Daher werden Frontend-Feinheiten wie Bootstrap und Elixir sowie der Authentifizierungs-Bootstrap und -Sitzungen nicht sofort aktiviert. und es gibt weniger Flexibilität beim Erweitern und Ändern der Bootstrap-Dateien.

Sie können mehr lesen hier

Ivan Dokov
quelle
4
Darüber hinaus verwendet Lumen nicht die Routing-Komponente von Symfony. Stattdessen wird Nikic / Fast-Route für eine höhere Leistung verwendet.
Limon Monte
Matt Stauffers Bower-Setup für Laravel macht den Zweck des Standard-Bootstrap-UI-Materials in Laravel ohnehin zunichte, und was Elixir betrifft, npm installso ist es nicht vollständig "out-of-the-box", würde ich sagen. Wir verlieren in dieser Hinsicht nicht viel, wenn wir zu Lumen wechseln. In Lumen erstelle ich einfach ein package.json und npm installiere Elixer und
richte
Nach der Verwendung von Lumen kann ich Ihnen jedoch sagen, dass es Frustrationen gibt. Bisher habe ich festgestellt, dass viele der Anfragen / Routen / Helfer im Vergleich zu den von Laravel verfügbaren unvollständig sind. Zum Beispiel können Sie keine redirect()->intended. Ich hoffe, Lumen wird in diesen Bereichen aufholen. Ich mag ein Laravel ohne ORM (Eloquent) sehr und deshalb gefällt mir Lumen sehr gut.
Programmierer
2
@prograhammer, ich glaube nicht, dass diese spezielle Funktion jemals in Lumen enthalten sein wird. Ich denke, dass dies eine Sitzung erfordern würde, die Lumen absichtlich abschafft. Außerdem sehe ich redirect()->intended()bei einer API nicht viel Verwendung , worauf sich Lumen konzentriert.
Tyler Crompton
1
Lumen ist für APIS nicht für Frontends
Lakin Mohapatra
4

Lumen Microframework ist eine leichte Version des Laravel Full-Stack-Frameworks. Lumen verwendet die Laravel-Syntax und -Komponenten und kann problemlos auf Laravel aktualisiert werden.

Lumen ist ein spezialisierteres (und abgespecktes) Framework für die Entwicklung von Microservices und APIs. Einige der Funktionen in Laravel, wie z. B. HTTP-Sitzungen, Cookies und Vorlagen, werden nicht benötigt, und Lumen entfernt sie, um das Wesentliche beizubehalten - Routing, Protokollierung, Caching, Warteschlangen, Validierung, Fehlerbehandlung und einige andere.

pardeep
quelle
1

Warum Lumen?

Lumen ist die perfekte Lösung für die Erstellung von Laravel-basierten Mikrodiensten und blitzschnellen APIs. Tatsächlich ist es eines der schnellsten verfügbaren Mikro-Frameworks. Es war noch nie einfacher, erstaunlich schnelle Dienste zur Unterstützung Ihrer Laravel-Anwendungen zu schreiben. Doc

Lumen ist ein Framework zum Erstellen von APIs, die im Wesentlichen JSON-Antworten für Ihre Anforderungen bereitstellen. Das ist es.

Diese Arten von Anwendungen werden im Allgemeinen als Webdienste bezeichnet .

Ab dem Lumen 5.2-Update werden keine Laravel-Ansichten, -Sitzungen usw. unterstützt. Dafür müssen Sie ein Upgrade auf das vollständige Laravel-Framework durchführen.

Einige Komponenten des Laravel-Frameworks werden zugunsten der Leistung gegen andere Pakete ausgetauscht. Überprüfen Sie sie hier

Beispielszenarien, in denen wir Lumen betrachten können

  • Möglicherweise möchten Sie einige Funktionen einer Anwendung über die API für andere Entwickler öffnen
  • Ihre Anwendung muss sowohl Web- als auch mobile Anwendungen unterstützen. Dann ist es perfekt, die Daten in einer Datenbank zu speichern, die in die Lumen-API eingeschlossen ist.
  • Wenn Sie die Skalierbarkeit als wichtigen Punkt betrachten, benötigen Sie möglicherweise Lumen
Shobi
quelle
-1

Der Hauptunterschied zwischen Laravel und Lumen besteht darin, dass Laravel handwerkliche Befehle haben kann, die Lumen nicht hat.

vaibhavmht225
quelle
Dies ist nicht wahr oder zumindest nicht aktuell. Ich weiß nicht viel über ältere Versionen, aber ich habe Lumen 7.x installiert und ich habe handwerkliche Befehle
Jonas Merhej