Diferenças e semelhanças entre Lumen e Laravel

181

Eu li a documentação e parece que o Lumen é o Laravel com menos recursos. Eu devo estar esquecendo alguma coisa. Estou procurando uma tabela de comparação dos componentes e recursos do Laravel e do Lumen. Alguém sabe as diferenças?

Ranjeet Karki
fonte
3
Isso não parece certo. O Laravel é um framework completo, onde o Lumen é apresentado como um micro framework derivado do Laravel, sacrificando parte de sua configurabilidade e extensibilidade.
fijas
3
O Lumen é praticamente o Laravel com menos recursos. Essa é a questão.
Frank

Respostas:

196

Atualização (5.2)

Com a versão mais recente do Lumen (5.2), o Microframework se concentra nas APIs sem estado.
A documentação declara:

O Lumen 5.2 representa uma mudança no emagrecimento do Lumen para se concentrar apenas em servir APIs JSON sem estado. Como tal, sessões e visualizações não são mais incluídas na estrutura. Se você precisar acessar esses recursos, use a estrutura completa do Laravel.


Resposta original (<= 5,1)

O lúmen tem tudo a ver com velocidade . É mais rápido e pode lidar com mais solicitações por segundo que o Laravel.

O Laravel é uma estrutura que cola vários componentes (componentes de terceiros e próprios do Laravels). Agora, o Lumen utiliza muitos dos mesmos componentes, mas reduz ao mínimo o processo de inicialização. Você poderia dizer que é uma "cola diferente", os componentes (e, portanto, muitos dos recursos) são basicamente os mesmos.

A melhoria de desempenho é obtida removendo parte da flexibilidade da estrutura em termos de configuração e alterando o processo de inicialização padrão.

Além disso, mais recursos são desativados por padrão e precisam ser ativados antes que possam ser usados. Como exemplo: Fachadas (como DB::table())
Você primeiro precisa descomentar esta linha bootstrap/app.phppara habilitá-las:

// $app->withFacades();

O mesmo vale para arquivos de ambiente Dotenv e Eloquent.

Para o roteamento, o Lumen usa o nikic / FastRoute em vez do roteador symfonys, porque ele tem um desempenho muito melhor e dá à microestrutura outro grande impulso.

Fora isso, praticamente tudo é igual ao Laravel.

Boas leituras no Lumen

lukasgeiter
fonte
7
Seria tão rápido se começarmos a fazer coisas sem comentários para recuperar os recursos?
Sam escuro
1
@SamDark Obviamente, ficará um pouco mais lento com todos os recursos que você ativar. Mas ele ainda vai ser muito rápido desde as características deficientes são apenas uma parte das otimizações de desempenho
lukasgeiter
Portanto, o benchmark não reflete a sobrecarga em aplicativos reais e, em aplicativos reais, será maior. ESTÁ BEM.
Sam Dark
1
@SamDark Esta postagem no blog explica como foi comparada. Como você pode ver, o aplicativo de teste retorna apenas "Hello World" sem usar modelos ou outros recursos da estrutura; portanto, o desempenho em um aplicativo real será mais lento (embora não seja notavelmente na maioria dos casos. Seu aplicativo ainda será ridiculamente rápido)
lukasgeiter
@ lukasgeiter, pelo que entendi, se estou criando um aplicativo Ionic com uma API RESTful Laravel, faria mais sentido usar o Lumen?
mtpultz
45

O Lumen não foi projetado para substituir o Laravel; é uma estrutura mais especializada (e simplificada) projetada para microsserviços e APIs. Ele retirou recursos desnecessários de uma API, como sessões HTTP e cookies, além de limitar o número de opções de configuração. Pronto, o Lumen sacrificou a flexibilidade do Laravel por velocidade.

No entanto, você pode adicionar componentes do Laravel ao Lumen para estendê-lo, para que ele possa ser usado para mais do que apenas microsserviços e API. No entanto, se seu objetivo é ampliar o Lumen para se tornar um site, você também pode usar o Laravel.

Eles também têm casos de uso diferentes. Lumen e Laravel devem trabalhar juntos. Para APIs e serviços serem frequentemente chamados, use o Lumen. Para aplicativos voltados para o usuário, use o Laravel.


Esta resposta foi retirada de um post que escrevi que explica a diferença entre Lumen e Laravel.

d4nyll
fonte
Tanto quanto eu sei, cookies, sessões etc ainda estão lá. No entanto, eles serão carregados com preguiça e afetarão apenas o desempenho quando usados.
Lukasgeiter
O lúmen é minha estrutura preferida agora. Como não uso o Eloquent (ou qualquer ORM), o Lumen se encaixa muito bem em mim.
prograhammer
2
Digamos que estou criando um aplicativo Web e decida escrever uma API para separar ainda mais a lógica (e permitir aplicativos facilmente de terceiros). Seria uma boa prática escrever a API com o Lumen e escrever o site com o Laravel?
Tyler Crompton
É uma substituição. É o Laravel com um roteador diferente. Virally nada foi retirado - apenas tornou opcional. Não há motivo legítimo para usar o Laravel quando um Laravel supostamente mais rápido (Lumen) está disponível.
21716 Rick Jolly
14

Citações de Matt Stauffer

O lúmen possui a mesma base do Laravel e muitos dos mesmos componentes. Mas o Lumen foi criado para microsserviços, não tanto para aplicativos voltados para o usuário (embora possa ser usado para qualquer coisa.) Dessa forma, os detalhes de front-end como Bootstrap e Elixir e o bootstrap e as sessões de autenticação não são ativados imediatamente, e há menos flexibilidade para estender e alterar os arquivos de inicialização.

Você pode ler mais aqui

Ivan Dokov
fonte
4
Além disso, o Lumen não usa o componente de roteamento do Symfony. Em vez disso, o nikic / fast-route é usado para obter melhor desempenho.
Limon Monte
A configuração do caramanchão de Matt Stauffer para o Laravel derruba o propósito das coisas padrão da interface do usuário do Bootstrap no Laravel, e, quanto ao Elixir, isso é algo npm installque não está completamente pronto "pronto para uso", eu diria. Portanto, não perdemos muito em relação a isso, mudando para o Lumen. Em Lumen, eu apenas criar um package.json e npm instalar Elixer, e pavilhão configuração e feito ...
prograhammer
No entanto, depois de usar o Lumen, posso dizer que há frustrações. Até agora, descobri que muitos dos pedidos / roteamento / auxiliares estão incompletos em comparação com o que está disponível no Laravel. Por exemplo, você não pode fazer a redirect()->intended. Espero que o Lumen alcance essas áreas. Eu realmente gosto de um Laravel sem ORM (Eloquent) e, portanto, o Lumen é muito atraente para mim.
21815 programahammer
2
@prograhammer, acho que esse recurso em particular nunca será incluído no Lumen. Eu acho que isso exigiria uma sessão que Lumen intencionalmente elimine. Além disso, não vejo muita utilidade redirect()->intended()com uma API, que é o foco do Lumen.
Tyler Crompton #
1
Lumen é para APIS não para frontends
Lakin Mohapatra
4

O microframework Lumen é uma versão leve da estrutura full-stack do Laravel. O Lumen usa a sintaxe e os componentes do Laravel e pode ser 'atualizado' facilmente para o Laravel.

O Lumen é uma estrutura mais especializada (e simplificada) projetada para o desenvolvimento de microsserviços e o desenvolvimento de API. Portanto, alguns dos recursos do Laravel, como sessões HTTP, cookies e modelos, não são necessários e o Lumen os retira, mantendo o essencial - roteamento, registro, armazenamento em cache, filas, validação, tratamento de erros e alguns outros.

pardeep
fonte
1

Por que Lumen?

O Lumen é a solução perfeita para criar microsserviços baseados no Laravel e APIs extremamente rápidas. De fato, é uma das micro-estruturas mais rápidas disponíveis. Nunca foi tão fácil escrever serviços incrivelmente rápidos para dar suporte aos aplicativos Laravel. Doc

O Lumen é uma estrutura para criar APIs, que essencialmente servirá respostas JSON para suas solicitações. É isso aí.

Esses tipos de aplicativos são conhecidos como serviços da web em geral .

A partir da atualização do Lumen 5.2, ele não suporta visualizações de laravel, sessões etc.

Alguns componentes da estrutura do Laravel são trocados por outros pacotes em favor do desempenho. verifique aqui

Exemplos de cenários em que podemos considerar o Lumen

  • Convém abrir alguns recursos de um aplicativo para outros desenvolvedores via API
  • Seu aplicativo precisa suportar aplicativos da Web e móveis; será perfeito armazenar os dados em um banco de dados agrupado na API do Lumen.
  • Quando você considera a escalabilidade um ponto importante, pode precisar de lúmen
Shobi
fonte
-1

A principal diferença entre laravel e lúmen é que o Laravel pode ter comandos artesanais, que não possui lúmen.

vaibhavmht225
fonte
Isso não é verdade ou, pelo menos, não está atualizado. Não sei muito sobre versões anteriores, mas instalei o lumen 7.xe tenho comandos artesanais
Jonas Merhej