Laravel Jetstream. Зачем?

    Всем привет! В преддверии старта курса "Framework Laravel", продолжаем цикл статей про новинки в Laravel 8 от нашего эксперта и по совместительству активного участника российского сообщества Laravel — Виталия Юшкевича.


    Эта статья — продолжение обзора новинок Laravel 8. Изначально задумывалось, что в этой статье будет продолжение обзора, затрагивающие преимущественно Jetstream. Но за последнее время это не сделал только ленивый.


    С одной стороны, большая часть разработчиков ленивая (в хорошем смысле этого слова), с другой, "еще один обзор" много пользы не принесет. Так как последнее обновление очень горячо обсуждается в разных комьюнити (русскоязычное и за его пределами), то мне захотелось попробовать получить ответ на вопрос — почему? Давайте вместе попробуем найти ответ на этот и другие вопросы.


    Laravel Jetstream — что это?


    Laravel Jetsream — это современно выглядящий скелет приложения с достаточно широким набором базовых функций. Часть из них опциональны.


    Примеры функциональных возможностей из коробки:


    • Авторизация, включая:
      • регистрацию
      • восстановление пароля
      • двухфакторную авторизацию
      • верификацию email
      • отображение списка браузерных сессий, с возможностью логаута на остальных устройствах
    • Управление профилем
      • данные пользователя
      • управление паролем
      • управление аватарками
      • удаление профиля
    • Управление АПИ токенами (интеграция с пакетом Laravel Sanctum), включая управление правами
    • Управление командами с разными ролями

    Под капотом используется пакет Fortify (для блока авторизации), выше упомянутый Sanctum. TailwindCss на frontend. И на выбор один из двух фронтенд стеков:


    • Livewire — связка livewire и blade. Рекомендуется, если хочется делать реактивные веб-приложения, но не хочется уходить в дебри vueJs и современного JS.
    • Inertia.js — связка фреймворка Inertia и VueJs. Этот стек напоминает работу с полноценным SPA приложением на Vuejs с сохранением роутинга на стороне Laravel.

    Краткий обзор на Laracast


    Что это значит и почему столько шума?


    Произошло качественное изменение (это определение не содержит оценочной характеристики направления этого изменения) идеологии и подхода к разработке веб-приложений.


    За последние годы сформировался некоторый принятый и привычный подход к разработке, который был в изначальном релизе выкинут. В пакет UI (старый подход) добавили поддержку новой версии laravel после большой волны негодования со стороны сообщества, но осадочек остался. И приписка о нежелательном использовании, которая была также смягчена под тем же самым давлением негодования сообщества.


    Taylor (основной maintainer Laravel) сделал ставку на не самые популярные фреймворки и технологии, но близкие к его взглядам (TailwindCss и Livewire, например, часто упоминались в разработках его коммерческих сервисов).


    С точки зрения новичка, безусловно, возросла точка входа во фреймворк.


    Я бы сказал больше — эта точка входа изменилась и стала другой.


    Стоит отметить, что после выхода 8 версии фреймворка прошло более 3 недель и риторика несколько изменилась. Желание идти на встречу Тейлора (тут должна быть звездачка для примечания), некоторые произведенные уступки сообществу.


    Так, например, после релиза Laravel 8 по сети разошелся пост от Ross Wintle с критикой (ссылка на этот пост, в том числе, была на хабре). 6 Октября вышел апдейт поста, в котором были сглажены многие углы — https://rosswintle.uk/2020/09/laravel-8-jetstream-and-learning-laravel/


    Также было достаточно активное обсуждение на reddit. 5 октября Taylor провел почти часовой стрим, где объяснял свою позицию, рассказывал, почему это хорошо и отвечал на другие вопросы, связанные с Jetstream.


    Зачем?


    Ответ на этот вопрос одновременно прост и сложен. И при этом у каждого может быть своим


    Тейлор достаточно самодостаточен в выборе вектора развития своего детища (тут тоже без количественной оценки плохо это или хорошо). Он выбирает инструменты, которые нравятся ему, и готов легко выпилить то, что ему не нравится, не спрашивая мнения у сообщества. Но все же он пытается подходить ответственно к принимаемым решениям и слушать сообщество, даже если это происходит "после" и происходит некоторый откат. Окажется ли Тейлор прав и "новатором" в выбранном векторе развития фреймворка — сейчас сложно сказать, на этот вопрос даст однозначный ответ только время.


    Я нахожу в этом релизе определенный знак по движению фреймворка в его некоторую специализацию. Laravel становится более ярко выраженным "фреймворком веб-разработчика", который позволяет за минимальное количество написанных строк кода и времени создать прототип веб-сайта, веб-приложения или даже SAAS сервиса. В Ларавел также сохраняются инструменты для быстрого создания API для SPA, мобильных приложений. Ларавел действительно позволяет это сделать быстро и по-своему элегантно.


    Тейлор создал ряд коммерческих продуктов, которые держат нагрузку и работают достаточно быстро. Поэтому ответ "можно ли создать на Laravel нагруженное приложение" имеет наглядные ответы.


    С другой стороны, проблемы Laravel некуда не уходят. Стало еще больше магии, трейтов, фасадов. Все это не лучшим образом сказывается на производительности и потребляемых ресурсов. Вопрос является ли Laravel отличным выбором для разработки высоконагруженного сервиса уже не является таким однозначным. Как минимум, разработка такого сервиса потребует более глубоких знаний фреймворка и решения ряда задач способами, не описанными в документации (а порой — существенно различающимися).


    Остается ли Laravel "в игре"? — безусловно да!


    Этот релиз мне показался скорее наступлением на рынок CMS с обилием проектов на WordPress. Laravel действительно есть что предложить "этому рынку".



    Читать ещё:


    OTUS. Онлайн-образование
    Цифровые навыки от ведущих экспертов

    Комментарии 0

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

    Самое читаемое