Perbedaan dan Persamaan Antara Lumen dan Laravel


181

Saya membaca dokumentasinya dan sepertinya Lumen Laravel dengan lebih sedikit fitur. Saya pasti melewatkan sesuatu. Saya mencari tabel perbandingan komponen dan fitur Laravel dan Lumen. Adakah yang tahu perbedaannya?


3
Itu sepertinya tidak benar. Laravel adalah kerangka kerja berfitur lengkap di mana Lumen disebut-sebut sebagai kerangka-mikro yang berasal dari Laravel dengan mengorbankan sebagian dari kemampuan konfigurasi dan ekstensibilitas.
fijas

3
Lumen cukup banyak dengan fitur Laravel lebih sedikit. Itulah intinya.
Frank


Jawaban:


196

Pembaruan (5.2)

Dengan versi terbaru Lumen (5.2) Microframework berfokus pada API Stateless.
The dokumentasi menyatakan:

Lumen 5.2 mewakili perubahan pada pelangsingan Lumen untuk fokus hanya pada penyajian API JSON yang tanpa kewarganegaraan. Dengan demikian, sesi dan pandangan tidak lagi termasuk dalam kerangka kerja. Jika Anda membutuhkan akses ke fitur-fitur ini, Anda harus menggunakan kerangka Laravel penuh.


Jawaban asli (<= 5.1)

Lumen adalah tentang kecepatan . Ini lebih cepat dan dapat menangani lebih banyak permintaan per detik daripada Laravel.

Laravel adalah kerangka kerja yang merekatkan banyak komponen (komponen pihak ketiga dan Laravel sendiri). Sekarang Lumen menggunakan banyak komponen yang sama, tetapi mengurangi proses bootstrap ke minimum. Bisa dibilang itu adalah "lem berbeda", komponennya (dan karenanya banyak fiturnya) kebanyakan sama.

Peningkatan kinerja dicapai dengan menghilangkan fleksibilitas kerangka kerja dalam hal konfigurasi dan mengubah proses boot default.

Selain itu, lebih banyak fitur dinonaktifkan secara default dan harus diaktifkan sebelum dapat digunakan. Sebagai contoh: Fasad (seperti DB::table())
Anda pertama kali harus menghapus komentar pada baris ini bootstrap/app.phpuntuk mengaktifkannya:

// $app->withFacades();

Hal yang sama berlaku untuk file lingkungan Dotenv dan Eloquent.

Untuk routing, Lumen menggunakan nikic / FastRoute daripada router symfonys karena performanya jauh lebih baik dan memberikan kerangka kerja mikro dorongan besar lainnya.

Selain itu hampir semuanya sama seperti di Laravel.

Bacaan bagus di Lumen


7
Apakah akan secepat itu jika kita akan memulai hal tidak menarik untuk mendapatkan fitur kembali?
Sam Dark

1
@ SamDark Jelas itu akan sedikit lebih lambat dengan setiap fitur yang Anda aktifkan. Tapi itu masih akan cukup cepat karena fitur yang dinonaktifkan hanyalah satu bagian dari optimasi kinerja
lukasgeiter

Jadi tolok ukur tidak mencerminkan overhead di aplikasi nyata dan di aplikasi nyata itu akan lebih tinggi. BAIK.
Sam Dark

1
@SamDark Posting blog ini menjelaskan bagaimana ia diperbandingkan . Seperti yang Anda lihat aplikasi uji hanya mengembalikan "Hello World" tanpa menggunakan model atau fitur kerangka kerja lainnya, sehingga kinerja dalam aplikasi nyata akan lebih lambat (walaupun dalam banyak kasus tidak terlihat. Aplikasi Anda akan tetap sangat cepat)
lukasgeiter

@lukasgeiter jadi seperti yang saya mengerti jika saya membangun aplikasi ionik dengan API Laravel yang tenang akan lebih masuk akal untuk menggunakan Lumen?
mtpultz

45

Lumen tidak dirancang untuk menggantikan Laravel, melainkan, itu adalah kerangka kerja yang lebih khusus (dan dipreteli) yang dirancang untuk layanan mikro dan API. Itu menghilangkan fitur yang tidak dibutuhkan untuk API seperti sesi HTTP dan cookie, dan juga membatasi jumlah opsi konfigurasi. Out-of-the-box, Lumen mengorbankan fleksibilitas Laravel untuk kecepatan.

Namun, Anda dapat menambahkan komponen Laravel ke Lumen untuk memperluasnya, sehingga dapat digunakan untuk lebih dari sekedar layanan mikro dan API. Namun, jika tujuan Anda adalah memperluas Lumen menjadi situs web, Anda sebaiknya menggunakan Laravel sebagai gantinya.

Mereka juga memiliki kasus penggunaan yang berbeda. Lumen dan Laravel dimaksudkan untuk bekerja bersama. Untuk API dan layanan sering dipanggil, gunakan Lumen. Untuk aplikasi yang menghadap pengguna, gunakan Laravel.


Jawaban ini diambil dari posting blog yang saya tulis yang menjelaskan perbedaan antara Lumen dan Laravel.


Sejauh yang saya tahu, cookie, sesi, dll masih ada di sana. Namun mereka akan dimuat malas dan hanya benar-benar mempengaruhi kinerja saat digunakan.
lukasgeiter

Lumen adalah kerangka kerja pilihan saya sekarang. Saya tidak menggunakan Eloquent (atau ORM), jadi Lumen sangat cocok untuk saya.
Pemrogram

2
Katakanlah saya sedang membangun aplikasi web dan memutuskan untuk menulis API untuk memisahkan logika (dan untuk memungkinkan aplikasi pihak ketiga dengan mudah). Apakah praktik yang baik untuk menulis API dengan Lumen dan menulis situs web dengan Laravel?
Tyler Crompton

Itu adalah pengganti. Ini Laravel dengan router yang berbeda. Secara virus tidak ada yang dilucuti - hanya dibuat opsional. Tidak ada alasan yang sah untuk menggunakan Laravel ketika Laravel yang seharusnya lebih cepat tersedia.
Rick Jolly

14

Kutipan dari Matt Stauffer

Lumen memiliki fondasi yang sama dengan Laravel, dan banyak komponen yang sama. Tapi Lumen dibangun untuk layanan microser, tidak begitu banyak untuk aplikasi yang menghadap pengguna (meskipun dapat digunakan untuk apa saja.) Dengan demikian, antarmuka frontend seperti Bootstrap dan Elixir dan sesi bootstrap dan sesi otentikasi tidak diaktifkan di luar kotak, dan ada sedikit fleksibilitas untuk memperluas dan mengubah file bootstrap.

Anda dapat membaca lebih lanjut di sini


4
Selain itu, Lumen tidak menggunakan komponen Routing Symfony. Sebaliknya, nikic / rute cepat digunakan untuk kinerja yang lebih baik.
Limon Monte

Pengaturan bower Matt Stauffer untuk Laravel mengalahkan tujuan dari hal-hal default Bootstrap UI di Laravel, dan untuk Elixir, itu adalah sebuah npm install"out-of-the-box" yang tidak lengkap sehingga saya tidak siap. Jadi kami tidak kehilangan banyak dalam hal ini, dengan beralih ke Lumen. Di Lumen, saya hanya membuat package.json dan npm menginstal Elixer, dan setup bower dan selesai ...
prograhammer

Namun, setelah menggunakan Lumen, saya dapat memberitahu Anda ada frustrasi. Sejauh ini saya telah menemukan bahwa banyak dari permintaan / perutean / pembantu tidak lengkap dibandingkan dengan apa yang tersedia dari Laravel. Misalnya, Anda tidak dapat melakukan a redirect()->intended. Saya berharap Lumen akan menyusul di daerah ini. Saya sangat suka Laravel tanpa ORM (Eloquent) dan Lumen sangat menarik bagi saya.
prograhammer

2
@prograhammer, saya tidak berpikir bahwa fitur khusus itu akan dimasukkan dalam Lumen. Saya pikir itu akan membutuhkan sesi yang Lumen sengaja tidak melakukannya. Selain itu, saya tidak melihat banyak kegunaan redirect()->intended()dengan API, yang menjadi fokus Lumen.
Tyler Crompton

1
Lumen untuk APIS bukan untuk frontend
Lakin Mohapatra

4

Lumen microframework adalah versi ringan dari kerangka penuh tumpukan Laravel. Lumen menggunakan sintaks dan komponen Laravel, dan dapat 'ditingkatkan' dengan mudah ke Laravel.

Lumen adalah kerangka kerja yang lebih khusus (dan dilucuti) yang dirancang untuk pengembangan Microservices dan pengembangan API. Jadi, beberapa fitur di Laravel seperti sesi HTTP, cookie, dan templating tidak diperlukan dan Lumen mengambilnya, menjaga hal-hal yang penting - perutean, logging, caching, antrian, validasi, penanganan kesalahan, dan beberapa lainnya.


1

Mengapa lumen

Lumen adalah solusi sempurna untuk membangun layanan mikro berbasis Laravel dan API yang sangat cepat. Bahkan, ini adalah salah satu kerangka kerja mikro tercepat yang ada. Tidak pernah semudah ini untuk menulis layanan yang luar biasa cepat untuk mendukung aplikasi Laravel Anda. Dokter

Lumen adalah kerangka kerja untuk membangun API, yang pada dasarnya akan melayani respons JSON untuk permintaan Anda. Itu dia.

Aplikasi semacam ini dikenal sebagai layanan web pada umumnya .

Pada pembaruan Lumen 5.2, itu tidak mendukung tampilan laravel, sesi, dll ... untuk itu Anda harus meningkatkan ke framework laravel penuh.

Beberapa komponen kerangka Laravel ditukar dengan paket lain yang mendukung kinerja. periksa di sini

Contoh skenario di mana kita dapat mempertimbangkan Lumen

  • Anda mungkin ingin membuka beberapa fitur aplikasi ke pengembang lain melalui API
  • Aplikasi Anda perlu mendukung aplikasi web dan seluler, maka akan sempurna untuk menyimpan data dalam DB yang dibungkus dengan Lumen API.
  • Ketika Anda mempertimbangkan skalabilitas sebagai poin penting, Anda mungkin perlu lumen

-1

Perbedaan utama antara laravel dan lumen adalah, Laravel dapat memiliki perintah artisan, yang tidak dimiliki lumen.


Ini tidak benar, atau setidaknya tidak mutakhir. Saya tidak tahu banyak tentang versi yang lebih lama, tetapi saya menginstal lumen 7.x dan saya memiliki perintah artisan
Jonas Merhej
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.