ความแตกต่างและความคล้ายคลึงกันระหว่าง Lumen และ Laravel


181

ฉันอ่านเอกสารและดูเหมือนว่าลูเมนเป็น Laravel ที่มีคุณสมบัติน้อยกว่า ฉันต้องคิดถึงบางสิ่ง ฉันกำลังมองหาตารางเปรียบเทียบองค์ประกอบและคุณสมบัติของทั้ง Laravel และ Lumen ไม่มีใครรู้ถึงความแตกต่าง?


3
ดูเหมือนจะไม่ถูกต้อง Laravel เป็นเฟรมเวิร์กที่มีคุณสมบัติครบถ้วนซึ่งลูเมนได้รับการขนานนามว่าเป็นเฟรมเวิร์กขนาดเล็กที่มาจาก Laravel โดยเสียสละความสามารถในการกำหนดค่าและความสามารถในการขยาย
fijas

3
Lumen เป็น Laravel ที่ค่อนข้างมีคุณสมบัติน้อยกว่ามาก นั่นคือประเด็น
แฟรงค์


คำตอบ:


196

อัปเดต (5.2)

ด้วย Lumen เวอร์ชันล่าสุด (5.2) การทำไมโครโฟลมุ่งเน้นที่ Stateless API เอกสารฯ :

Lumen 5.2 แสดงให้เห็นถึงการเปลี่ยนแปลงในการลดน้ำหนักลูเมนเพื่อมุ่งเน้นการให้บริการไร้สัญชาติ JSON APIs ดังนั้นเซสชันและมุมมองจะไม่รวมอยู่ในกรอบงานอีกต่อไป หากคุณต้องการเข้าถึงฟีเจอร์เหล่านี้คุณควรใช้เฟรมเวิร์ก Laravel แบบเต็ม


คำตอบเดิม (<= 5.1)

Lumen คือทั้งหมดที่เกี่ยวกับความเร็ว มันเร็วกว่าและสามารถรองรับคำขอได้มากขึ้นต่อวินาทีกว่า Laravel

Laravel เป็นเฟรมเวิร์กที่รวมส่วนประกอบหลายอย่างเข้าด้วยกัน (บุคคลที่สามและส่วนประกอบของ Laravels เอง) ตอนนี้ Lumen ใช้ประโยชน์จากส่วนประกอบเดียวกันจำนวนมาก แต่ตัดขั้นตอนการบูตสต็อกให้เหลือน้อยที่สุด คุณสามารถพูดได้ว่ามันเป็น "กาวที่แตกต่าง" ส่วนประกอบ (และดังนั้นคุณสมบัติมากมาย) ส่วนใหญ่จะเหมือนกัน

การปรับปรุงประสิทธิภาพทำได้โดยนำความยืดหยุ่นของกรอบงานไปใช้ในแง่ของการกำหนดค่าและการเปลี่ยนแปลงกระบวนการบูตเริ่มต้น

นอกจากนั้นคุณสมบัติเพิ่มเติมถูกปิดใช้งานโดยค่าเริ่มต้นและจะต้องเปิดใช้งานก่อนจึงจะสามารถใช้งานได้ ตัวอย่างเช่น: Facades (like DB::table())
ก่อนอื่นคุณต้องยกเลิกการใส่เครื่องหมายบรรทัดนี้bootstrap/app.phpเพื่อเปิดใช้งาน:

// $app->withFacades();

เช่นเดียวกันสำหรับไฟล์สภาพแวดล้อม Dotenv และ Eloquent

สำหรับการกำหนดเส้นทาง Lumen ใช้nikic / FastRouteแทนที่จะเป็นเราเตอร์ symfonys เพราะมันทำงานได้ดีขึ้นมากและให้เฟรมเวิร์กขนาดเล็กเพิ่มขึ้นอีกมาก

นอกเหนือจากนั้นทุกอย่างก็เหมือนกับใน Laravel

อ่านได้ดีบน Lumen


7
มันจะเร็วกว่านี้หรือไม่ถ้าเราจะเริ่มทำคอมเม้นท์เพื่อรับคุณสมบัติกลับมา?
Sam Dark

1
@ SamDark เห็นได้ชัดว่ามันจะช้าลงเล็กน้อยเมื่อเปิดใช้งานคุณลักษณะทุกอย่าง แต่มันจะยังค่อนข้างเร็วเนื่องจากฟีเจอร์ที่ปิดใช้งานนั้นเป็นเพียงส่วนหนึ่งของการปรับปรุงประสิทธิภาพ
lukasgeiter

ดังนั้นมาตรฐานไม่ได้สะท้อนค่าใช้จ่ายในแอปจริงและในแอปจริงมันจะสูงขึ้น ตกลง.
แซมดาร์ก

1
@SamDark โพสต์บล็อกนี้อธิบายถึงวิธีการเปรียบเทียบ ที่คุณสามารถดูการประยุกต์ใช้การทดสอบเพียงแค่ส่งกลับ "Hello World" โดยใช้แบบจำลองหรือคุณลักษณะกรอบอื่น ๆ เพื่อให้ประสิทธิภาพในการประยุกต์ใช้จริงจะช้าลง (แม้ว่าจะไม่เห็นได้ชัดในกรณีส่วนใหญ่ใบสมัครของคุณจะยังคงเป็นขันรวดเร็ว.)
lukasgeiter

@lukasgeiter ดังนั้นฉันจึงเข้าใจว่าถ้าฉันสร้างแอพพลิเคชั่นไอออนิกด้วย RESTful Laravel API มันจะมีความหมายมากกว่าที่จะใช้ Lumen?
mtpultz

45

Lumen ไม่ได้ถูกออกแบบมาเพื่อแทนที่ Laravel แต่เป็นเฟรมเวิร์กที่พิเศษ (และถอดแบบ) ที่ออกแบบมาสำหรับ micro-services และ API มันใช้คุณสมบัติที่ไม่จำเป็นสำหรับ API เช่นเซสชัน HTTP และคุกกี้และยัง จำกัด จำนวนตัวเลือกการกำหนดค่า Lumen ใช้ความยืดหยุ่นของ Laravel เพื่อความเร็ว

อย่างไรก็ตามคุณสามารถเพิ่มส่วนประกอบ Laravel ลงใน Lumen เพื่อขยายได้ดังนั้นจึงสามารถใช้งานได้มากกว่าบริการไมโครและ API อย่างไรก็ตามหากเป้าหมายของคุณคือการขยาย Lumen ให้เป็นเว็บไซต์คุณอาจใช้ Laravel แทน

พวกเขายังมีกรณีการใช้งานที่แตกต่างกัน Lumen และ Laravel ตั้งใจทำงานร่วมกัน สำหรับ API และบริการมักถูกเรียกใช้ Lumen สำหรับแอปพลิเคชันที่ผู้ใช้หันไปใช้ Laravel


คำตอบนี้มาจากบล็อกโพสต์ที่ฉันเขียนซึ่งอธิบายความแตกต่างระหว่าง Lumen และ Laravel


เท่าที่ฉันรู้คุกกี้เซสชัน ฯลฯ ยังอยู่ในนั้น อย่างไรก็ตามพวกเขาจะโหลดขี้เกียจและมีผลต่อประสิทธิภาพการทำงานเมื่อใช้
Lukasgeiter

Lumen เป็นเฟรมเวิร์กที่ฉันต้องการในตอนนี้ ฉันไม่ได้ใช้ Eloquent (หรือ ORM ใด ๆ ) ดังนั้น Lumen จึงเหมาะกับฉันจริงๆ
prograhammer

2
สมมติว่าฉันกำลังสร้างเว็บแอปพลิเคชันและตัดสินใจที่จะเขียน API เพื่อแยกตรรกะเพิ่มเติม (และอนุญาตแอปพลิเคชันบุคคลที่สามได้อย่างง่ายดาย) จะเป็นการดีถ้าจะเขียน API กับ Lumen และเขียนเว็บไซต์ด้วย Laravel หรือไม่?
Tyler Crompton

มันคือการเปลี่ยน Laravel เป็นเราเตอร์ตัวอื่น ไม่มีอะไรจะถูกปล้นออกมา - ทำเพียงตัวเลือก ไม่มีเหตุผลที่ถูกต้องในการใช้ Laravel เมื่อมี Laravel (Lumen) ที่เร็วกว่าที่คาดการณ์ไว้
Rick Jolly

14

อ้างอิงจาก Matt Stauffer

Lumen มีรากฐานเดียวกันกับ Laravel และมีองค์ประกอบเดียวกันหลายอย่าง แต่ Lumen ถูกสร้างขึ้นสำหรับ microservices ไม่มากสำหรับแอปพลิเคชันที่ต้องเผชิญกับผู้ใช้ (แม้ว่าจะสามารถใช้ได้กับทุกสิ่ง) เช่นนี้ส่วนหน้าเช่น Bootstrap และ Elixir และ bootstrap การรับรองความถูกต้องและเซสชันไม่ได้เปิดใช้งานนอกกรอบ และมีความยืดหยุ่นน้อยกว่าสำหรับการขยายและเปลี่ยนไฟล์บู๊ตสแตรป

คุณสามารถอ่านเพิ่มเติม ที่นี่


4
นอกจากนี้ Lumen ไม่ได้ใช้องค์ประกอบการกำหนดเส้นทางของ Symfony แต่จะใช้ nikic / fast-route เพื่อประสิทธิภาพที่ดียิ่งขึ้น
Limon Monte

การตั้งค่า bowerของ Matt Stauffer สำหรับ Laravel เอาชนะจุดประสงค์ของ Bootstrap UI ที่เป็นค่าเริ่มต้นใน Laravel ต่อไปและสำหรับ Elixir นั่นคือnpm installสิ่งที่ยังไม่พร้อม "out-of-the-box" อย่างสมบูรณ์ ดังนั้นเราจึงไม่สูญเสียอะไรเกี่ยวกับสิ่งเหล่านี้มากนักโดยเปลี่ยนเป็น Lumen ใน Lumen ฉันเพิ่งสร้าง package.json และ npm ติดตั้ง Elixer และตั้งค่า bower และเสร็จสิ้น ...
prograhammer

อย่างไรก็ตามหลังจากใช้ Lumen ฉันสามารถบอกคุณได้ว่ามีความผิดหวัง จนถึงตอนนี้ฉันได้ค้นพบว่าคำขอ / การกำหนดเส้นทาง / ผู้ช่วยเหลือจำนวนมากไม่สมบูรณ์เมื่อเทียบกับสิ่งที่มีอยู่ใน Laravel redirect()->intendedตัวอย่างเช่นคุณไม่สามารถทำ ฉันหวังว่าลูเมนจะตามทันในเรื่องเหล่านี้ ฉันชอบ Laravel ที่ไม่มี ORM (Eloquent) จริงๆและดังนั้น Lumen จึงดึงดูดฉันมาก
prograhammer

2
@prograhammer ฉันไม่คิดว่าคุณลักษณะเฉพาะนั้นจะรวมอยู่ใน Lumen ฉันคิดว่าต้องใช้เซสชันที่ Lumen ตั้งใจทำ นอกจากนี้ฉันไม่เห็นประโยชน์มากนักสำหรับredirect()->intended()API ซึ่งเป็นสิ่งที่ Lumen ให้ความสำคัญ
Tyler Crompton

1
Lumen สำหรับ APIS ไม่ใช่ส่วนหน้า
Lakin Mohapatra

4

การทำไมโครโฟลูเมนแบบลูเมนเป็นรุ่นน้ำหนักเบาของเฟรมเวิร์กสแต็กเต็มซ้อน Lumen ใช้ไวยากรณ์และส่วนประกอบของ Laravel และสามารถ 'อัพเกรด' เป็น Laravel ได้อย่างง่ายดาย

Lumen เป็นเฟรมเวิร์กที่พิเศษ (และถอดแบบ) ที่ออกแบบมาเพื่อการพัฒนาไมโครซอฟท์ ดังนั้นคุณสมบัติบางอย่างใน Laravel เช่นเซสชัน HTTP คุกกี้และการสร้างเทมเพลตจึงไม่จำเป็นและ Lumen จะนำสิ่งเหล่านั้นออกไปทำให้สิ่งที่จำเป็น - การกำหนดเส้นทางการเข้าสู่ระบบการแคชการรอคิวการตรวจสอบความถูกต้องการจัดการข้อผิดพลาด


1

ทำไมต้องลูเมน?

Lumen เป็นโซลูชั่นที่สมบูรณ์แบบสำหรับการสร้างบริการไมโครที่ใช้ Laravel และ API ที่รวดเร็ว ในความเป็นจริงมันเป็นหนึ่งในไมโครเฟรมเวิร์กที่เร็วที่สุด การเขียนบริการที่รวดเร็วอย่างน่าทึ่งไม่เคยง่ายกว่านี้มาก่อนเพื่อรองรับแอปพลิเคชั่น Laravel ของคุณ คุณหมอ

Lumen เป็นเฟรมเวิร์กในการสร้าง API ซึ่งจะให้บริการการตอบสนอง JSON สำหรับคำขอของคุณเป็นหลัก แค่นั้นแหละ.

เหล่านี้ชนิดของการใช้งานที่เป็นที่รู้จักกันเป็นบริการเว็บทั่วไป

ในฐานะที่เป็นของการปรับปรุง Lumen 5.2 มันไม่รองรับมุมมอง laravel เซสชันและอื่น ๆ ... ซึ่งคุณจะต้องอัพเกรดเป็น laravel framework เต็มรูปแบบ

ส่วนประกอบบางส่วนของเฟรมเวิร์ก Laravel นั้นสลับกับแพ็คเกจอื่นเพื่อประสิทธิภาพ ตรวจสอบพวกเขาที่นี่

ตัวอย่างสถานการณ์ที่เราสามารถพิจารณาลูเมน

  • คุณอาจต้องการเปิดฟีเจอร์ของแอปพลิเคชั่นให้กับนักพัฒนาอื่น ๆ ผ่าน API
  • แอปพลิเคชันของคุณต้องรองรับทั้งเว็บและแอปพลิเคชั่นมือถือแล้วมันจะสมบูรณ์แบบในการจัดเก็บข้อมูลในฐานข้อมูลที่ห่อด้วย Lumen API
  • เมื่อคุณพิจารณาความสามารถในการปรับขนาดได้เป็นจุดสำคัญคุณอาจต้องมีลูเมน

-1

ความแตกต่างที่สำคัญระหว่าง laravel และ lumen คือ Laravel สามารถมีคำสั่งแบบ artisan ซึ่ง lumen ไม่มี


สิ่งนี้ไม่เป็นความจริงหรืออย่างน้อยก็ไม่ทันสมัย ฉันไม่รู้อะไรเกี่ยวกับเวอร์ชั่นเก่ากว่านี้ แต่ฉันติดตั้งลูเมน 7.x และฉันมีคำสั่งช่างฝีมือ
Jonas Merhej
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.