Відмінності та схожість між Люменом і Ларавелем


181

Я читав документацію і, здається, Люмен - це Laravel з меншими можливостями. Мені, мабуть, чогось не вистачає. Я шукаю таблицю порівняння компонентів та особливостей Laravel та Lumen. Хтось знає відмінності?


3
Це не здається правильним. Laravel - це повнофункціональний каркас, де Lumen рекламується як мікро-рамка, похідна від Laravel, жертвуючи деякою його налаштованістю та розширюваністю.
фіяс

3
Люмен - це майже Laravel з меншими можливостями. В тім-то й річ.
Френк


Відповіді:


196

Оновлення (5.2)

З останньою версією Lumen (5.2) Microframework зосереджується на API без стану.
У документації зазначено:

Lumen 5.2 являє собою зміну Lumen для схуднення, щоб зосередитися виключно на обслуговуванні API без громадянства, JSON. Таким чином, сесії та погляди більше не включаються в рамки. Якщо вам потрібен доступ до цих функцій, вам слід скористатися повною рамкою Laravel.


Оригінальна відповідь (<= 5,1)

Просвіт - це швидкість . Це швидше і може обробляти більше запитів в секунду, ніж Laravel.

Laravel - це рамка, яка склеює безліч компонентів (власні компоненти сторонніх компаній і Laravels). Зараз Lumen використовує безліч одних і тих же компонентів, але зводить процес завантаження до мінімуму. Можна сказати, що це "різний клей", компоненти (а отже, безліч функцій) здебільшого однакові.

Поліпшення продуктивності досягається за рахунок позбавлення деякої гнучкості рамки з точки зору конфігурації та зміни процесу завантаження за замовчуванням.

Крім того, більше функцій вимкнено за замовчуванням і їх потрібно активувати, перш ніж їх можна використовувати. Як приклад: Фасади (на зразок DB::table())
Спочатку потрібно скаментувати цей рядок, bootstrap/app.phpщоб увімкнути їх:

// $app->withFacades();

Те саме стосується файлів середовища Dotenv та Eloquent.

Для маршрутизації Lumen використовує nikic / FastRoute замість маршрутизатора symfonys, оскільки він працює набагато краще і надає мікро-рамці ще один великий імпульс.

Крім цього, майже все все те саме, що і в Laravel.

Добре читає про Люмен


7
Це було б настільки швидко, якщо ми почнемо коментувати речі, щоб повернути функції?
Сем Темний

1
@SamDark Очевидно, що це стане трохи повільніше з кожною функцією, яку ви включите. Але це все ще буде досить швидко, оскільки відключені функції - це лише одна частина оптимізації продуктивності
lukasgeiter

Тож показник не відображає накладні витрати в реальних додатках, а в реальних додатках він буде вище. ГАРАЗД.
Сем Темний

1
@SamDark У цьому дописі в блозі пояснюється те, як це було визначено. Як ви бачите, тестова програма просто повертає "Hello World" без використання моделей чи інших функцій рамки, тому продуктивність у реальній програмі буде повільнішою (хоча і не помітно в більшості випадків. Ваша програма все одно буде смішно швидкою)
lukasgeiter

@lukasgeiter, так що я розумію, якщо я будую додаток Ionic з API RESTful Laravel, було б більше сенсу використовувати Lumen?
mtpultz

45

Lumen не розрахований на заміну Laravel, скоріше, це більш спеціалізована (і збита) рамка, розроблена для мікропослуг та API. Це позбавило зайвих функцій для API, таких як HTTP-сеанси та файли cookie, а також обмежило кількість параметрів конфігурації. Нестандартний Люмен жертвував гнучкістю Ларавеля за швидкість.

Однак ви можете додати компоненти Laravel до Lumen, щоб розширити його, щоб його можна було використовувати лише для мікро-сервісів та API. Однак якщо ваша мета - розширити Lumen, щоб стати веб-сайтом, ви можете скористатися Laravel замість цього.

Вони також мають різні випадки використання. Lumen і Laravel покликані працювати разом. Для API та служб, які часто телефонують, використовуйте Lumen. Для програм, орієнтованих на користувачів, використовуйте Laravel.


Ця відповідь взята з допису в блозі, який я написав, що пояснює різницю між Люменом та Ларавелем.


Наскільки я знаю, файли cookie, сесії тощо все ще є. Однак вони будуть ледачими і лише по-справжньому впливатимуть на працездатність при використанні.
lukasgeiter

Зараз Люмен - це моя обрана структура. Я не використовую красномовних (або будь-яких ORM), тому Lumen мені дуже добре підходить.
програмамер

2
Скажімо, я будую веб-додаток і вирішу написати API для подальшого розділення логіки (і для дозволу сторонніх додатків). Було б хорошою практикою писати API з Lumen і писати веб-сайт за допомогою Laravel?
Тайлер Кромптон

Це заміна. Це Laravel з іншим маршрутизатором. Фактично нічого не знімали - просто робили необов’язковим. Немає законних причин використовувати Laravel, коли доступний швидше Laravel (Lumen).
Рік Джоллі

14

Цитата від Метта Штауфера

У просвіту є той самий фундамент, що і у Laravel, і багато з тих же компонентів. Але Lumen створений для мікросервісів, не стільки для програм, орієнтованих на користувачів (хоча його можна використовувати для будь-чого) і є менша гнучкість для розширення та зміни файлів завантаження.

Більше ви можете прочитати тут


4
Крім того, Lumen не використовує компонент маршрутизації Symfony. Натомість nikic / fast-route використовується для більшої продуктивності.
Лімон Монте

Налаштування відстійника Метта Штауфера для Laravel все одно перемагає призначення стандартних інтерфейсів Bootstrap у інтерфейсі Laravel, а що стосується Elixir, npm installто це не зовсім готовий "нестандартний". Тому ми не втрачаємо багато з цього приводу, переходячи на Люмен. У Люмені я просто створюю package.json і npm, встановлюю Elixer, а також встановлюю
багажник і закінчую

Однак після використання Люмена я можу вам сказати, що виникають розлади. Поки я виявив, що багато запитів / маршрутизації / помічників неповні в порівнянні з доступними в Laravel. Наприклад, ви не можете зробити це redirect()->intended. Я сподіваюся, що Люмен наздожене ці райони. Мені дуже подобається Laravel без ORM (Красномовний), і тому Люмен мені дуже приваблює.
програмамер

2
@prograhammer, я не думаю, що ця особливість коли-небудь буде включена в Lumen. Я думаю, що для цього потрібна сесія, яку Люмен навмисно не проводить. Крім того, я не бачу великої користі для redirect()->intended()API, на чому фокусується Lumen.
Тайлер Кромптон

1
Lumen призначений для APIS не для кордонів
Lakin Mohapatra

4

Мікрофрейм Lumen - це легка версія повної стеки Laravel. Lumen використовує синтаксис і компоненти Laravel, і його можна легко оновити до Laravel.

Lumen - це більш спеціалізована (і скорочена) рамка, розроблена для розвитку мікросервісів та розробки API. Отже, деякі функції Laravel, такі як HTTP-сеанси, файли cookie та шаблони, не потрібні, і Lumen забирає їх, зберігаючи найважливіше - маршрутизацію, ведення журналів, кешування, черги, перевірку, обробку помилок та пару інших.


1

Чому Люмен?

Lumen - це ідеальне рішення для створення мікро-сервісів на базі Laravel та виправлення швидких API. Насправді це одна з найшвидших доступних мікрокадрів. Ніколи не було простіше писати приголомшливо швидкі сервіси для підтримки ваших програм Laravel. Док

Lumen - це основа для створення API, яка по суті слугуватиме JSON-відповідями на ваші запити. Це воно.

Ці види додатків загалом відомі як веб-сервіси .

Що стосується оновлення Lumen 5.2, воно не підтримує перегляди laravel, сеанси тощо ... для цього вам доведеться оновити до повної рамки laravel.

Деякі компоненти рамки Laravel замінені іншими пакетами на користь продуктивності. перевірити їх тут

Приклад сценаріїв, де ми можемо розглянути Люмен

  • Ви можете відкрити деякі функції програми іншим розробникам через API
  • У вашій програмі потрібно підтримувати як веб, так і мобільний додаток, тоді ідеально буде зберігати дані у БД, загорненій у API Lumen.
  • Якщо ви розглядаєте масштабованість як важливий момент, вам може знадобитися просвіт

-1

Основна відмінність ларавелу від просвіту полягає в тому, що Laravel може мати команди ремісників, яких у просвіті немає.


Це неправда або, принаймні, не актуальна. Я не знаю багато про старіші версії, але я встановив lumen 7.x і у мене є
майстерні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.