Differenze e somiglianze tra Lumen e Laravel


181

Ho letto la documentazione e sembra che Lumen sia Laravel con meno funzioni. Mi manca qualcosa. Sto cercando una tabella comparativa dei componenti e delle caratteristiche di Laravel e Lumen. Qualcuno conosce le differenze?


3
Non sembra giusto. Laravel è un framework completo in cui Lumen viene propagandato come micro-framework derivato da Laravel sacrificando parte della sua configurabilità ed estensibilità.
fijas,

3
Lumen è praticamente Laravel con meno funzionalità. Questo è il punto.
Frank,


Risposte:


196

Aggiornamento (5.2)

Con l'ultima versione di Lumen (5.2), Microframework si concentra sulle API stateless.
La documentazione afferma:

Lumen 5.2 rappresenta un cambiamento nel dimagrimento di Lumen per concentrarsi esclusivamente sul servizio di API JSON apolidi. Pertanto, le sessioni e le viste non sono più incluse nel framework. Se è necessario accedere a queste funzionalità, è necessario utilizzare l'intero framework Laravel.


Risposta originale (<= 5.1)

Lumen è tutto sulla velocità . È più veloce e può gestire più richieste al secondo rispetto a Laravel.

Laravel è un framework che unisce molti componenti (componenti di terze parti e propri di Laravels). Ora Lumen utilizza molti degli stessi componenti, ma riduce al minimo il processo di bootstrap. Si potrebbe dire che è una "colla diversa", i componenti (e quindi molte caratteristiche) sono per lo più gli stessi.

Il miglioramento delle prestazioni si ottiene eliminando parte della flessibilità del framework in termini di configurazione e modificando il processo di avvio predefinito.

Oltre a ciò, più funzioni sono disabilitate per impostazione predefinita e devono essere attivate prima di poter essere utilizzate. Ad esempio: Facciate (come DB::table()) Per
prima cosa devi decommentare questa linea bootstrap/app.phpper abilitarle:

// $app->withFacades();

Lo stesso vale per i file di ambiente Dotenv e Eloquent.

Per il routing Lumen usa nikic / FastRoute invece del router symfonys perché funziona molto meglio e dà al micro-framework un altro grande impulso.

A parte questo, praticamente tutto è lo stesso di Laravel.

Buona lettura su Lumen


7
Sarebbe così veloce se iniziassimo cose scommentanti per ripristinare le funzionalità?
Sam Dark,

1
@SamDark Ovviamente diventerà un po 'più lento con ogni funzione che abiliti. Ma sarà comunque abbastanza veloce poiché le funzionalità disabilitate sono solo un pezzo delle ottimizzazioni delle prestazioni
lukasgeiter

Quindi il benchmark non riflette le spese generali nelle app reali e nelle app reali sarà più elevato. OK.
Sam Dark,

1
@SamDark Questo post sul blog spiega come è stato confrontato. Come puoi vedere l'applicazione di test restituisce semplicemente "Hello World" senza utilizzare modelli o altre funzionalità del framework, quindi le prestazioni in un'applicazione reale saranno più lente (anche se non in modo evidente nella maggior parte dei casi. L'applicazione sarà comunque incredibilmente veloce)
lukasgeiter

@lukasgeiter così come lo capisco se sto costruendo un'app ionica con un'API RESTful Laravel avrebbe più senso usare Lumen?
mtpultz,

45

Lumen non è progettato per sostituire Laravel, piuttosto è un framework più specializzato (e ridotto) progettato per i micro-servizi e le API. Ha rimosso le funzionalità non necessarie per un'API come sessioni HTTP e cookie e ha anche limitato il numero di opzioni di configurazione. Immediatamente, Lumen ha sacrificato la flessibilità di Laravel per la velocità.

Tuttavia, è possibile aggiungere componenti Laravel a Lumen per estenderlo, quindi può essere utilizzato per più di un semplice micro-servizio e API. Tuttavia, se il tuo obiettivo è quello di estendere Lumen per diventare un sito Web, puoi utilizzare Laravel.

Hanno anche diversi casi d'uso. Lumen e Laravel dovrebbero lavorare insieme. Per le API e i servizi che vengono chiamati di frequente, utilizzare Lumen. Per applicazioni rivolte all'utente, utilizzare Laravel.


Questa risposta è tratta da un post sul blog che ho scritto che spiega la differenza tra Lumen e Laravel.


Per quanto ne so, i cookie, le sessioni ecc. Sono ancora presenti. Tuttavia saranno caricati in modo pigro e influiranno davvero solo sulle prestazioni quando vengono utilizzati.
lukasgeiter,

Lumen è il mio framework preferito ora. Non uso Eloquent (o alcun ORM), quindi Lumen mi sta davvero bene.
prograhammer

2
Diciamo che sto creando un'applicazione Web e decido di scrivere un'API per separare ulteriormente la logica (e per consentire facilmente applicazioni di terze parti). Sarebbe buona pratica scrivere l'API con Lumen e scrivere il sito Web con Laravel?
Tyler Crompton,

È un rimpiazzo. È Laravel con un router diverso. Praticamente nulla è stato eliminato - reso opzionale. Non c'è motivo legittimo per usare Laravel quando è disponibile un Laravel (Lumen) apparentemente più veloce.
Rick Jolly,

14

Citazione di Matt Stauffer

Lumen ha le stesse fondamenta di Laravel e molti degli stessi componenti. Ma Lumen è progettato per i microservizi, non tanto per le applicazioni rivolte all'utente (anche se può essere utilizzato per qualsiasi cosa.) In quanto tale, le novità front-end come Bootstrap ed Elixir e il bootstrap e le sessioni di autenticazione non sono pronti all'uso, e c'è meno flessibilità per l'estensione e la modifica dei file bootstrap.

Puoi leggere di più qui


4
Inoltre, Lumen non utilizza il componente Routing di Symfony. Invece, nikic / fast-route viene utilizzato per prestazioni migliori.
Limon Monte,

L' impostazione del pergolato di Matt Stauffer per Laravel sconfigge comunque lo scopo dell'interfaccia predefinita Bootstrap dell'interfaccia utente in Laravel, e per quanto riguarda Elixir, è una npm installcosa che non è del tutto pronta "pronta all'uso", direi. Quindi non perdiamo molto riguardo a questi, passando a Lumen. In Lumen, ho appena creato un package.json e npm installano Elixer, e ho installato Bower e fatto ...
prograhammer

Tuttavia, dopo aver usato Lumen, posso dirti che ci sono frustrazioni. Finora ho scoperto che molti degli aiuti di richiesta / instradamento / sono incompleti rispetto a quelli disponibili da Laravel. Ad esempio, non puoi fare un redirect()->intended. Spero che Lumen raggiungerà queste aree. Mi piace molto un Laravel senza ORM (Eloquent) e quindi Lumen è molto attraente per me.
prograhammer

2
@prograhammer, non credo che quella particolare caratteristica sarà mai inclusa in Lumen. Penso che ciò richiederebbe una sessione che Lumen elimina intenzionalmente. Inoltre, non vedo molto utile redirect()->intended()con un'API, che è ciò su cui Lumen si concentra.
Tyler Crompton,

1
Lumen è per APIS non per frontend
Lakin Mohapatra il

4

Il microframework di Lumen è una versione leggera del framework full-stack Laravel. Lumen usa la sintassi e i componenti di Laravel e può essere 'aggiornato' facilmente a Laravel.

Lumen è un framework più specializzato (e ridotto) progettato per lo sviluppo di microservizi e sviluppo API. Quindi, alcune delle funzionalità di Laravel come sessioni HTTP, cookie e modelli non sono necessarie e Lumen le toglie, mantenendo ciò che è essenziale: routing, registrazione, memorizzazione nella cache, code, convalida, gestione degli errori e un paio di altre.


1

Perché Lumen

Lumen è la soluzione perfetta per creare micro-servizi basati su Laravel e API incredibilmente veloci. In effetti, è uno dei micro-framework più veloci disponibili. Scrivere servizi incredibilmente veloci per supportare le tue applicazioni Laravel non è mai stato così facile. Doc

Lumen è un framework per la creazione di API, che essenzialmente servirà le risposte JSON per le tue richieste. Questo è tutto.

Questi tipi di applicazioni sono noti come servizi Web in generale .

A partire dall'aggiornamento di Lumen 5.2, non supporta le viste laravel, le sessioni ecc ... per questo dovrai aggiornare al framework laravel completo.

Alcuni componenti del framework Laravel vengono scambiati con altri pacchetti a favore delle prestazioni. controllali qui

Scenari di esempio in cui possiamo considerare Lumen

  • Potresti voler aprire alcune funzionalità di un'applicazione ad altri sviluppatori tramite API
  • La tua applicazione deve supportare sia l'applicazione Web che mobile, quindi sarà perfetto per archiviare i dati in un DB racchiuso nell'API Lumen.
  • Quando consideri la scalabilità come un punto importante, potresti aver bisogno di lumen

-1

La differenza principale tra laravel e lumen è che Laravel può avere comandi artigianali, che lumen non ha.


Questo non è vero, o almeno non aggiornato. Non so molto sulle versioni precedenti, ma ho installato lumen 7.xe ho comandi artigianali
Jonas Merhej
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.