Sự khác biệt và tương đồng giữa Lumen và Laravel


181

Tôi đọc tài liệu và có vẻ như Lumen là Laravel với ít tính năng hơn. Chắc chắn là tôi đang thiếu gì đó. Tôi đang tìm kiếm một bảng so sánh các thành phần và tính năng của cả Laravel và Lumen. Có ai biết sự khác biệt?


3
Điều đó có vẻ không đúng. Laravel là một khung làm việc đầy đủ tính năng trong đó Lumen được quảng cáo là một khung vi mô có nguồn gốc từ Laravel bằng cách hy sinh một số cấu hình và khả năng mở rộng của nó.
fijas

3
Lumen là khá nhiều Laravel với ít tính năng hơn. Đó là điểm.
Frank


Câu trả lời:


196

Cập nhật (5.2)

Với phiên bản mới nhất của Lumen (5.2), Microframework tập trung vào API không trạng thái.
Các tài liệu nêu:

Lumen 5.2 đại diện cho một sự thay đổi trong việc giảm béo Lumen để chỉ tập trung vào việc phục vụ các API JSON không trạng thái. Như vậy, các phiên và lượt xem không còn được bao gồm trong khung. Nếu bạn cần quyền truy cập vào các tính năng này, bạn nên sử dụng khung công tác Laravel đầy đủ.


Câu trả lời gốc (<= 5.1)

Lumen là tất cả về tốc độ . Nó nhanh hơn và có thể xử lý nhiều yêu cầu hơn mỗi giây so với Laravel.

Laravel là một khung kết hợp rất nhiều thành phần (các thành phần riêng của bên thứ 3 và của Laravels). Bây giờ Lumen sử dụng rất nhiều thành phần giống nhau, nhưng loại bỏ quá trình bootstrapping xuống mức tối thiểu. Bạn có thể nói nó là một "chất keo khác nhau", các thành phần (và do đó rất nhiều tính năng) hầu hết đều giống nhau.

Cải thiện hiệu suất đạt được bằng cách lấy đi một số tính linh hoạt của khung về cấu hình và thay đổi quy trình khởi động mặc định.

Bên cạnh đó, nhiều tính năng bị tắt theo mặc định và phải được kích hoạt trước khi chúng có thể được sử dụng. Ví dụ: Mặt tiền (như DB::table())
Trước tiên, bạn cần bỏ ghi chú dòng này bootstrap/app.phpđể bật chúng:

// $app->withFacades();

Điều tương tự cũng xảy ra với các tệp môi trường Dotenv và Eloquent.

Để định tuyến Lumen sử dụng nikic / FastRoute thay vì bộ định tuyến symfonys vì nó hoạt động tốt hơn rất nhiều và cung cấp cho khung vi mô một bước tiến lớn khác.

Khác với điều đó khá nhiều, mọi thứ đều giống như trong Laravel.

Đọc tốt trên Lumen


7
Sẽ nhanh đến mức nếu chúng ta bắt đầu bỏ qua những thứ cần chú ý để lấy lại các tính năng?
Sam Dark

1
@SamDark Rõ ràng là nó sẽ chậm hơn một chút với mọi tính năng bạn kích hoạt. Nhưng nó vẫn sẽ khá nhanh vì các tính năng bị vô hiệu hóa chỉ là một phần của tối ưu hóa hiệu suất
lukasgeiter

Vì vậy, điểm chuẩn không phản ánh chi phí trong ứng dụng thực và trong ứng dụng thực, nó sẽ cao hơn. ĐỒNG Ý.
Sam Dark

1
@SamDark Bài đăng trên blog này giải thích cách nó được điểm chuẩn. Như bạn có thể thấy các ứng dụng thử nghiệm chỉ trả về "Hello World" mà không sử dụng mô hình hoặc các tính năng khuôn khổ khác, vì vậy việc thực hiện trong một ứng dụng thực tế sẽ chậm hơn (mặc dù không đáng kể trong hầu hết các trường hợp ứng dụng của bạn sẽ vẫn được ridiculously nhanh.)
lukasgeiter

@lukasgeiter để tôi hiểu điều đó nếu tôi xây dựng một ứng dụng Ionic với API RESTful API, nó sẽ có ý nghĩa hơn khi sử dụng Lumen?
mtpultz

45

Lumen không được thiết kế để thay thế Laravel, thay vào đó, nó là một khung chuyên dụng hơn (và tước bỏ) được thiết kế cho các dịch vụ vi mô và API. Nó đã lấy đi các tính năng không cần thiết cho một API như phiên HTTP và cookie và cũng giới hạn số lượng tùy chọn cấu hình. Ra khỏi hộp, Lumen đã hy sinh sự linh hoạt của Laravel cho tốc độ.

Tuy nhiên, bạn có thể thêm các thành phần Laravel vào Lumen để mở rộng nó, vì vậy nó có thể được sử dụng không chỉ cho các dịch vụ vi mô và API. Tuy nhiên, nếu mục tiêu của bạn là mở rộng Lumen để trở thành một trang web, bạn cũng có thể sử dụng Laravel thay thế.

Họ cũng có trường hợp sử dụng khác nhau. Lumen và Laravel có nghĩa là để làm việc cùng nhau. Đối với các API và dịch vụ thường xuyên được gọi, hãy sử dụng Lumen. Đối với các ứng dụng hướng tới người dùng, hãy sử dụng Laravel.


Câu trả lời này được lấy từ một bài đăng trên blog mà tôi đã viết giải thích sự khác biệt giữa Lumen và Laravel.


Theo tôi biết, cookie, phiên vv vẫn còn ở đó. Tuy nhiên, chúng sẽ được tải lười biếng và chỉ thực sự ảnh hưởng đến hiệu suất khi sử dụng.
lukasgeiter

Lumen là khuôn khổ ưa thích của tôi bây giờ. Tôi không sử dụng Eloquent (hoặc bất kỳ ORM nào), vì vậy Lumen rất phù hợp với tôi.
prograhammer

2
Giả sử tôi đang xây dựng một ứng dụng web và quyết định viết API để phân tách logic hơn nữa (và cho phép các ứng dụng bên thứ ba dễ dàng). Sẽ tốt hơn nếu viết API bằng Lumen và viết trang web với Laravel?
Tyler Crompton

Nó là một sự thay thế. Đó là Laravel với một bộ định tuyến khác. Về mặt vi-rút, không có gì bị loại bỏ - chỉ cần thực hiện tùy chọn. Không có lý do chính đáng để sử dụng Laravel khi có sẵn một chiếc Laravel (Lumen) được cho là nhanh hơn.
Rick Jolly

14

Trích dẫn từ Matt Stauffer

Lumen có cùng nền tảng với Laravel và nhiều thành phần giống nhau. Nhưng Lumen được xây dựng cho các dịch vụ siêu nhỏ, không nhiều cho các ứng dụng hướng tới người dùng (mặc dù nó có thể được sử dụng cho bất cứ thứ gì.) và có ít linh hoạt hơn để mở rộng và thay đổi các tệp bootstrap.

Bạn có thể đọc thêm ở đây


4
Ngoài ra, Lumen không sử dụng thành phần Định tuyến của Symfony. Thay vào đó, nikic / fast-route được sử dụng để có hiệu suất cao hơn.
Limon Monte

Thiết lập bower của Matt Stauffer cho Laravel đánh bại mục đích của công cụ UI Bootstrap mặc định trong dù sao đi nữa, và đối với Elixir, đó npm installkhông phải là "hoàn toàn sẵn sàng" mà tôi muốn nói. Vì vậy, chúng tôi không mất nhiều liên quan đến những điều này, bằng cách chuyển sang Lumen. Trong Lumen, tôi chỉ cần tạo một gói.json và npm cài đặt Elixer, và thiết lập bower và thực hiện ...
prograhammer

Tuy nhiên, sau khi sử dụng Lumen, tôi có thể nói với bạn rằng có những sự thất vọng. Cho đến nay tôi đã phát hiện ra rằng nhiều yêu cầu / định tuyến / trợ giúp không đầy đủ so với những gì có sẵn từ Laravel. Ví dụ, bạn không thể làm a redirect()->intended. Tôi hy vọng Lumen sẽ bắt kịp trong các lĩnh vực này. Tôi thực sự thích một Laravel không có ORM (Eloquent) và vì vậy Lumen rất hấp dẫn tôi.
prograhammer

2
@prograhammer, tôi không nghĩ rằng tính năng đặc biệt đó sẽ được đưa vào Lumen. Tôi nghĩ rằng điều đó sẽ đòi hỏi một phiên mà Lumen cố tình bỏ đi. Ngoài ra, tôi không thấy sử dụng nhiều cho redirect()->intended()API, đó là những gì Lumen tập trung vào.
Tyler Crompton

1
Lumen dành cho APIS không dành cho tiền tuyến
Lakin Mohapatra

4

Lumen microframework là một phiên bản nhẹ của khung công tác đầy đủ của Laravel. Lumen sử dụng cú pháp và các thành phần của Laravel và có thể dễ dàng 'nâng cấp' lên Laravel.

Lumen là một khung chuyên dụng hơn (và tước bỏ) được thiết kế để phát triển API và phát triển API. Vì vậy, một số tính năng trong Laravel như phiên HTTP, cookie và tạo khuôn mẫu là không cần thiết và Lumen sẽ loại bỏ chúng, giữ những gì cần thiết - định tuyến, ghi nhật ký, lưu trữ, xếp hàng, xác thực, xử lý lỗi và một vài tính năng khác.


1

Tại sao lại là Lumen?

Lumen là giải pháp hoàn hảo để xây dựng các dịch vụ vi mô dựa trên Laravel và API nhanh. Trên thực tế, đó là một trong những khung vi mô nhanh nhất hiện có. Chưa bao giờ việc viết các dịch vụ nhanh đến mức đáng kinh ngạc để hỗ trợ các ứng dụng Laravel của bạn chưa bao giờ dễ dàng hơn thế. Bác sĩ

Lumen là một khung để xây dựng các API, về cơ bản sẽ phục vụ các phản hồi JSON cho các yêu cầu của bạn. Đó là nó.

Những loại ứng dụng này được gọi là dịch vụ web nói chung .

Kể từ bản cập nhật Lumen 5.2, nó không hỗ trợ các chế độ xem laravel, các phiên, v.v ... mà bạn sẽ phải nâng cấp lên khung laravel đầy đủ.

Một số thành phần của khung công tác Laravel được hoán đổi với các gói khác có lợi cho hiệu năng. kiểm tra chúng ở đây

Các kịch bản ví dụ nơi chúng ta có thể xem xét Lumen

  • Bạn có thể muốn mở một số tính năng của ứng dụng cho các nhà phát triển khác thông qua API
  • Ứng dụng của bạn cần hỗ trợ cả web và ứng dụng di động, khi đó việc lưu trữ dữ liệu trong DB được bao bọc trong API Lumen là hoàn hảo.
  • Khi bạn coi khả năng mở rộng là một điểm quan trọng, bạn có thể cần lum

-1

Sự khác biệt chính giữa laravel và lum là, Laravel có thể có các lệnh thủ công, mà lum không có.


Điều này không đúng, hoặc ít nhất là không cập nhật. Tôi không biết nhiều về các phiên bản cũ hơn, nhưng tôi đã cài đặt lum 7.x và tôi có các lệnh thủ công
Jonas Merhej
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.