Różnice i podobieństwa między Lumen i Laravel

181

Przeczytałem dokumentację i wydaje się, że Lumen to Laravel z mniejszą liczbą funkcji. Coś mi brakuje. Szukam tabeli porównawczej składników i cech zarówno Laravela, jak i Lumen. Czy ktoś zna różnice?

Ranjeet Karki
źródło
3
To nie wydaje się właściwe. Laravel jest w pełni funkcjonalnym frameworkiem, w którym Lumen jest reklamowany jako mikrostruktura wywodząca się z Laravela przez poświęcenie części jego możliwości konfiguracji i rozszerzalności.
fijas
3
Lumen to właściwie Laravel z mniejszą liczbą funkcji. O to chodzi.
Frank

Odpowiedzi:

196

Aktualizacja (5.2)

W najnowszej wersji Lumen (5.2) Microframework skupia się na bezstanowych interfejsach API.
W dokumentacji czytamy:

Lumen 5.2 stanowi zmianę w odchudzaniu Lumen, aby skupić się wyłącznie na obsłudze bezpaństwowych interfejsów API JSON. W związku z tym sesje i widoki nie są już uwzględnione w ramach. Jeśli potrzebujesz dostępu do tych funkcji, powinieneś użyć pełnego frameworku Laravel.


Oryginalna odpowiedź (<= 5.1)

Lumen polega na szybkości . Jest szybszy i może obsłużyć więcej żądań na sekundę niż Laravel.

Laravel to framework, który skleja ze sobą wiele elementów (elementy zewnętrzne i własne Laravels). Teraz Lumen wykorzystuje wiele takich samych komponentów, ale ogranicza proces ładowania do minimum. Można powiedzieć, że jest to „inny klej”, komponenty (a zatem wiele funkcji) są w większości takie same.

Poprawę wydajności osiągnięto poprzez usunięcie części elastyczności frameworka w zakresie konfiguracji i zmianę domyślnego procesu rozruchu.

Poza tym więcej funkcji jest domyślnie wyłączonych i należy je aktywować, zanim będzie można z nich korzystać. Na przykład: Fasady (jak DB::table())
Najpierw musisz odkomentować tę linię, bootstrap/app.phpaby je włączyć:

// $app->withFacades();

To samo dotyczy plików środowiska Dotenv i Eloquent.

Do routingu Lumen używa nikic / FastRoute zamiast routera symfonys, ponieważ działa znacznie lepiej i daje mikrośrodowisku kolejny duży impuls.

Poza tym prawie wszystko jest takie samo jak w Laravel.

Dobra lektura na Lumen

lukasgeiter
źródło
7
Czy byłoby tak szybko, gdybyśmy zaczęli odkomentować rzeczy, aby odzyskać funkcje?
Sam Dark,
1
@SamDark Oczywiście z każdą włączoną funkcją będzie trochę wolniej. Ale nadal będzie dość szybko, ponieważ wyłączone funkcje to tylko jeden z elementów optymalizacji wydajności
lukasgeiter,
Test porównawczy nie odzwierciedla kosztów ogólnych w rzeczywistych aplikacjach, a w rzeczywistych aplikacjach będzie wyższy. DOBRZE.
Sam Dark,
1
@SamDark Ten post na blogu wyjaśnia, w jaki sposób został przetestowany. Jak widać, aplikacja testowa po prostu zwraca „Hello World” bez użycia modeli lub innych funkcji frameworka, więc wydajność w rzeczywistej aplikacji będzie wolniejsza (choć w większości przypadków nie zauważalnie. Twoja aplikacja będzie nadal śmiesznie szybka)
lukasgeiter
@lukasgeiter, więc jak rozumiem, jeśli buduję aplikację jonową z RESTful Laravel API, to czy warto używać Lumen?
mtpultz
45

Lumen nie jest przeznaczony do zastąpienia Laravela, jest raczej bardziej wyspecjalizowanym (i uproszczonym) środowiskiem zaprojektowanym dla mikrousług i interfejsów API. Odebrał niepotrzebne funkcje interfejsu API, takie jak sesje HTTP i pliki cookie, a także ograniczył liczbę opcji konfiguracji. Po wyjęciu z pudełka Lumen poświęcił elastyczność Laravela dla szybkości.

Możesz jednak dodać komponenty Laravel do Lumen, aby go rozszerzyć, dzięki czemu można go używać do więcej niż tylko mikro-usług i API. Jeśli jednak Twoim celem jest rozszerzenie Lumen na stronę internetową, równie dobrze możesz użyć Laravela.

Mają też różne przypadki użycia. Lumen i Laravel mają ze sobą współpracować. Aby często wywoływać interfejsy API i usługi, użyj Lumen. Do aplikacji zorientowanych na użytkownika użyj Laravel.


Ta odpowiedź pochodzi z wpisu na blogu , który wyjaśnia różnicę między Lumenem a Laravelem.

d4nyll
źródło
O ile mi wiadomo, pliki cookie, sesje itp. Nadal tam są. Będą jednak leniwie ładowane i naprawdę wpływają tylko na wydajność, gdy są używane.
lukasgeiter
Lumen jest teraz moją ulubioną strukturą. Nie używam Elokwentnego (ani żadnych ORM), więc Lumen bardzo do mnie pasuje.
prograhammer
2
Powiedzmy, że buduję aplikację internetową i postanawiam napisać interfejs API w celu dalszego oddzielenia logiki (i umożliwienia łatwym aplikacjom stron trzecich). Czy dobrą praktyką byłoby napisanie API za pomocą Lumen i napisanie strony internetowej za pomocą Laravel?
Tyler Crompton,
To jest zamiennik. To Laravel z innym routerem. Praktycznie nic nie zostało rozebrane - tylko stało się opcjonalne. Nie ma uzasadnionego powodu, aby używać Laravela, gdy dostępna jest podobno szybsza Laravel (Lumen).
Rick Jolly,
14

Cytat od Matta Stauffera

Lumen ma tę samą podstawę co Laravel i wiele takich samych składników. Ale Lumen został zbudowany z myślą o mikrousługach, nie tyle o aplikacjach zorientowanych na użytkownika (choć można go używać do wszystkiego). Jako takie, nakładki takie jak Bootstrap i Elixir oraz bootstrap uwierzytelniania i sesje nie są dostępne od razu po wyjęciu z pudełka, i jest mniej elastyczna przy rozszerzaniu i zmianie plików bootstrap.

Możesz przeczytać więcej tutaj

Ivan Dokov
źródło
4
Ponadto Lumen nie używa komponentu Routing Symfony. Zamiast tego stosuje się nikic / fast-route dla większej wydajności.
Limon Monte
Konfiguracja altany Matta Stauffera dla Laravela i tak przekracza cel domyślnego interfejsu użytkownika Bootstrap w Laravel, a jeśli chodzi o Elixir, npm installto nie jest całkowicie gotowe „po wyjęciu z pudełka”, powiedziałbym. Tak więc nie tracimy wiele w związku z tym, przechodząc na Lumen. W Lumen po prostu tworzę pakiet.json i npm instaluję Elixer, instaluję altanę i gotowe ...
prograhammer
Jednak po użyciu Lumen mogę powiedzieć, że są frustracje. Do tej pory odkryłem, że wiele żądań / tras / pomocników jest niekompletnych w porównaniu do tego, co jest dostępne z Laravel. Na przykład nie możesz zrobić redirect()->intended. Mam nadzieję, że Lumen dogoni te obszary. Bardzo lubię Laravela bez ORM (Elokwentny), więc Lumen bardzo mnie pociąga.
prograhammer
2
@prograhammer, nie sądzę, że ta konkretna funkcja kiedykolwiek będzie dostępna w Lumen. Myślę, że wymagałoby to sesji, z którą Lumen celowo rezygnuje. Ponadto nie widzę większego zastosowania w redirect()->intended()przypadku API, na czym skupia się Lumen.
Tyler Crompton,
1
Lumen jest dla APIS, a nie dla nakładek
Lakin Mohapatra
4

Lumen micrrrrr to lekka wersja pełnego Laravela frameworka. Lumen korzysta ze składni i składników Laravela i może być łatwo „uaktualniony” do Laravela.

Lumen jest bardziej wyspecjalizowanym (i uproszczonym) środowiskiem zaprojektowanym do rozwoju Microservices i API. Tak więc niektóre funkcje Laravel, takie jak sesje HTTP, pliki cookie i szablony, nie są potrzebne, a Lumen je zabiera, zachowując to, co najważniejsze - routing, logowanie, buforowanie, kolejki, sprawdzanie poprawności, obsługę błędów i kilka innych.

przepraszam
źródło
1

Dlaczego Lumen?

Lumen to idealne rozwiązanie do budowy mikrousług opartych na Laravel i niezwykle szybkich interfejsów API. W rzeczywistości jest to jedna z najszybszych dostępnych mikrocząstek. Pisanie zadziwiająco szybkich usług do obsługi aplikacji Laravel nigdy nie było łatwiejsze. Doc

Lumen to platforma do tworzenia interfejsów API, która zasadniczo będzie obsługiwać odpowiedzi JSON na Twoje żądania. Otóż ​​to.

Tego rodzaju aplikacje są ogólnie znane jako usługi sieciowe .

Od aktualizacji Lumen 5.2 nie obsługuje widoków laravel, sesji itp., W tym celu będziesz musiał zaktualizować do pełnej wersji laravel.

Niektóre komponenty frameworka Laravel są zamieniane z innymi pakietami na korzyść wydajności. sprawdź je tutaj

Przykładowe scenariusze, w których możemy rozważyć Lumen

  • Możesz chcieć otworzyć niektóre funkcje aplikacji dla innych programistów za pośrednictwem interfejsu API
  • Twoja aplikacja musi obsługiwać zarówno aplikację internetową, jak i mobilną, wtedy idealnie będzie przechowywać dane w DB opakowanej w Lumen API.
  • Jeśli uważasz skalowalność za ważny punkt, możesz potrzebować światła
Shobi
źródło
-1

Główną różnicą między laravelem a światłem jest to, że Laravel może mieć polecenia rzemieślnicze, których nie ma światło.

vaibhavmht225
źródło
To nie jest prawda, a przynajmniej nieaktualne. Nie wiem dużo o starszych wersjach, ale zainstalowałem lumen 7.x i mam polecenia rzemieślnika
Jonas Merhej