PavelUstyugov
@PavelUstyugov
Самозанятый веб-разработчик

В каком случае есть смысл использовать Lumen вместо Laravel? В чем он слабее?

В каком случае целесообразнее выбрать Lumen вместо Laravel?

В моем случае проект - это полностью два разделенных проекта, взаимодействующих по api. Фронт на Vuejs, Бэкэнд на Laravel. Основные операции - это выборка из базы данных, заполнение анкет, различные оповещения в кабинетах.
Может быть для этого достаточно Lumen? И насколько тяжело будет потом при необходимости перенести код на Laravel?
  • Вопрос задан
  • 1418 просмотров
Решения вопроса 2
@aleksejjjj
Скажу честно, с Lumen я работал не особо много. По сути своей он показался мне тем же Laravel в котором вырезаны/отключены многие компоненты. Например Eloquent. За счёт этого он быстрее, некоторые говорят что намного, хотя возможно от задач зависит.

Большинство компонентов можно подключить обратно, чем я и занялся, но в какой-то момент понял что пытаюсь превратить Lumen в Laravel что смысла особого не имеет.

Т.е. для моей задачи Lumen оказалось не достаточно, хотя по тому что описываете вы, для вас он вполне может оказаться отличным решением.

Насчет миграции обратно на Laravel - насколько помню у меня это прошло абсолютно без проблем, достаточно было перенести свой код (контроллеры и прочее) на чистый Laravel и всё. Скорее всего они "обратно совместимы", т.е. код написаный для Lumen работает в Laravel без каких-либо модификаций. Но здесь могу ошибиться.
Ответ написан
Lumen имеет смысл использовать тогда, когда у вас предполагается множество запросов к серверу. Это API layers, сервер для постоянной обработки каких-либо задач (job processing), проекты с микросервисной архитектурой. Из Lumen выкинуты многие вещи, в том числе и весьма полезные (например, Eloquent, Blade, form requests, некоторые другие). Что-то можно подключить из коробки, что-то нельзя без извращений или нельзя вовсе (blade, form requests). За счет этого он быстрее.

Замечу также, что Lumen все же медленнее Symphony, так что по сути, спектр его применения сужается до двух фундаментальных кейсов:
- когда у вас есть проект на Laravel и вы хотите сделать для него API, не нарушая экосистему
- когда вы \ команда не знаете симфони, но Лара слишком медленная для ваших нужд

И насколько тяжело будет потом при необходимости перенести код на Laravel

Нет никакой разницы между пользовательским кодом на Laravel и пользовательским же кодом для Lumen. Отличается только bootstrap, немного конфиги, подключение миддлвейров \ роутов \ пакетов, и структура папок немножко другая. Кроме того, некоторые конструкции в Lumen не работают. Например, нельзя назвать роут при помощи конструкции name(), нельзя применить миддлвейр при помощи конструкции middleware(). Возможно, еще где-то есть отличия по мелочи. В целом, они обратно совместимы и можно копипастить, уделив особое внимание конфигурации проекта и подключению всех необходимых частей функционала.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы