Laravel или Express: что выбрать
Автор статьи – разработчик с шестилетним опытом работы, а также совладелец двух стартапов. Автор имел возможность участвовать в разработке проектов на Laravel и Express (и не один раз).
Вообще, если подобный вопрос (Express vs Laravel) возник у Вас в голове, то, скорее всего, Вы имеете некоторые пробелы в знаниях в связанных с этими технологиями языках программирования (PHP для Laravel, Node.js для Express). Поэтому статья начнется “издалека” и будет больше не про сравнение “кружки и чашки”, а про технологии. И да, если Вы не программист, то извините за технические нудности, мы постараемся их сократить. И если что-то не будет понятно, то это не страшно, это не влияет на понимание. Автор постарался объяснить самые важные термины, остальное – дополнительная пища для ума знающих.
Что такое Laravel
Laravel – это MVC фреймворк (читать как инструмент) для разработки веб-приложений на языке программирования PHP. MVC – это известный почти всем программистам (в университетах проходят) паттерн проектирования (грубо говоря, готовая архитектура). Объяснять принцип работы MVC здесь мы не будем, но, если очень интересно, то во второй половине этой статьи объясняем принцип работы этого паттерна.
Разработчик прибегает к разработке на фреймворке (не обязательно Laravel) для ускорения своей работы. Внутри Laravel есть масса готовых вещей: готовая маршрутизация, HTML-шаблонизаторы, ORM и даже CLI. Некоторые модули можно заменять на свои. Если программисту требуется написать сервер для обработки запросов (API для мобильного приложения), свою CMS или CRM, то Laravel идеальный выбор.
Что такое PHP и как работает
PHP – это однопоточный язык программирования, который создан для создания сайтов. Он даже расшифровывается как Personal Home Page (персональная домашняя страница). Однопоточный – это значит, что код будет выполняться построчно, не отходя влево или вправо. Если вообще не понятно, то можно сравнить потоки с количеством действий, которые он может делать: один поток – одно действие.
Плюс сам по себе процесс PHP не оптимизирован на Вашем сервере по умолчанию, и на каждого пользователя он занимает поток в процессоре (у процессора свои потоки). У процессора не так много потоков, и, когда пользователей много, на PHP сервере есть риск получить потоковое голодание процессора, что сказывается на общей производительности.
Грубо говоря, на PHP из коробки очень сложно делать высоконагруженные приложения, которые могут обрабатывать кучу подключений. Мы уже про это писали тут, приводя в пример Facebook* и VK со своими собственными версиями этого языка для решения вышеописанной проблемы. Хотя, все равно, можно подготовить PHP к большим нагрузкам, для этого придумали оркестрацию PHP потоков. Вот только обычный Laravel или WordPress разработчик (с вероятностью 90%) про это не знает, ибо это делается на уровне “настроек ядра” языка программирования. Поэтому успешные стартапы первым делом разбираются с этой проблемой, когда их сервис “стреляет”, нанимая дорогих специалистов.
Что такое Express
Express – это фреймворк (читать как инструмент) для разработки веб-приложений на языке программирования Node.js. Прямо как Laravel, ага?
В Express нет заранее заданной архитектуры, как в Laravel (MVC). Его за это как раз и любят, потому что руки разработчика развязываются максимально. В Express нету и половины того, что есть в Laravel, например, CLI и работы с HTML-шаблонизаторами. Здесь только готовая маршрутизация. Почему так? Потому что на нем пишут сервера, которые запросы обрабатывают (причем высоконагруженные), это изначальная задача этого инструмента.
Конечно, со временем на нем стали делать сайты, и от Express пошли другие производные инструменты, созданные на нем, например, Nuxt.js. Как раз его более правильно сравнивать с Laravel, ибо там есть CLI и “шаблонизаторы” (из Vue.js).
Express выбирают за максимальную гибкость и за его возможности, связанные с языком программирования Node.js. Его можно использовать с другими наработками, и поэтому можно очень быстро сделать неплохой высоконагруженный сервер, почти что из коробки. Проще говоря, на нем можно сделать API для приложения, сайт и даже CRM и CMS. Прямо как на Laravel, только будет чуть свободней.
Что такое Node.js и как работает
Node.js – это язык программирования, который работает на базе JavaScript (грубо говоря, даже тоже самое, только с парой “плюшек”). Язык асинхронный и многопоточный. Многопоточный, значит может выполнять несколько задач параллельно. Асинхронный, значит некоторые участки кода могут выполняться в разной последовательности. Node.js создавался не только для создания сайтов, также на нем пишут консольные программы, скрипты для работы с файлами и инструменты проверки программного кода в реальном времени (линтеры).
Если сравнивать с PHP, то данный инструмент более производителен по скорости выполнения большинства скриптов и не требует дополнительных оркестраций как PHP. Потому что сама Node.js работает на строго выделенном количестве потоков (сколько есть в процессоре). Поэтому потоковое голодание – редкое явление для Node.js. Конечно, есть минусы: Node.js требует на сервере чуть больше оперативной памяти, в отличии от PHP, который может работать “на микроволновке”. Хотя это вполне адекватная цена за дополнительные возможности.
Laravel vs Express
К этому времени Вы должны были понять, что данное сравнение не совсем уместно. Это как кружка и чашка, вроде отличия есть, но пить то можно из всего. На Laravel можно сделать почти то же самое, что и на Express. Но, все таки, давайте пройдемся по некоторым неявным пунктам, которые Вам 100% помогут определится.
Многопоточность
Если Ваш код должен выполнять что-то в нескольких потоках, то выбор стоит за Express (Node.js). Вообще, на Node.js можно писать асинхронный код, который чуть ли не параллельно (а может прямо и параллельно) будет обрабатывать запросы к базе данных. За счет этого можно увеличить ответ сервера до 2 раз. Иными словами, если программист чуть-чуть запарится, то все сложные операции будут работать значительно быстрее, чем на Laravel (PHP). И да, все это из коробки.
Обработка большого количества запросов
Express, из-за того, что работает на Node.js, может более эффективно обрабатывать большое количество запросов к серверу, поэтому его любят использовать в тех местах, где очень много трафика. Laravel работает на PHP и не имеет такой возможности из коробки. Обратите внимание, почти не существует сервисов с высокой нагрузкой, написанных на чистом PHP: VK использует kPHP, Facebook* использует HipHop.
Слабое железо
Если у Вас сервер, это “микроволновка” с выходом в интернет, то выбор падает на Laravel (PHP). PHP способен работать на самых слабых серверах, и да, это скажется на производительности, но зато оптимизация расходов на железо.
Нужен реактивный интерфейс и SEO
SEO – оптимизация сайта под поисковые системы.
Реактивный интерфейс – это без загрузочный интерфейс. Иными словами, вместо бесконечных загрузок страниц (как на Laravel при переходе по ссылкам) Ваш сайт загружает только нужный кусок. Очень сложно объяснить текстом, просто посмотрите на этот сайт (наш блог) и Netflix, Ozon, YouTube, Тинькофф Инвестиции (реактивные сайты). Если лень гуглить, вот пару примеров: первый, второй. Это реактивные сайты по типу Ozon.
Вместо того, чтобы браузеру напрягаться и тратить много времени и ресурсов на пересборку всей страницы, в данном случае просто перерисовывается конкретный кусок. Это намного эффективней. Подобный интерфейс создается с помощью JavaScript, а вот сам JavaScript плохо индексируется поисковыми системами, и поэтому поисковики не видят часть контента.
Инженеры и программисты, недолго думая, нашли замечательное решение – SSR (Server Side Rendering). Грубо говоря, эта технология позволяет избежать плохих показателей при SEO-продвижении. И да, это работает только с Node.js. Подробней можете прочитать в нашей статье по ссылке выше.
Простота
Хотя Express и имеет меньше функций, чем Laravel, сам по себе Node.js более сложен в обучении, чем PHP, из-за асинхронности. Для некоторых разработчиков это какая-то непосильная вещь при понимании языка на первое время при обучении. Поэтому, если Ваша команда до этого писала на PHP, пусть и дальше делает это.
Комьюнити
Если смотреть на официальные репозитории в GitHub, то Laravel популярней Express (69.000 звезд против 56.000 звезд). Хотя разница не сильно огромная, по итогу то оба очень популярны.
Если брать рынок Европы и США, то там проще найти в команду разработчика со знанием Express, потому что Node.js более популярен, а PHP менее. Плюс там используют Ruby (язык программирования), который до России (и СНГ) дошел как-то запоздало. В России ситуация как раз наоборот, PHP тут почему-то дико популярен. Хотя, это не значит, что есть какой-то дефицит разработчиков на Node.js, просто c PHP попроще, это факт.
Свобода
Express более гибок и позволяет реализовывать свои архитектуры, нежели Laravel. С одной стороны, это большой плюс, но, с другой, минус. Если разработчик не опытен, то есть риск получить плохую архитектуру проекта и беды с дальнейшей доработкой. Но, если разработчик – отличный специалист, то на Express можно сделать “более чистую и правильную” архитектуру для проекта, что более важно для успешных проектов. С Laravel накосячить намного сложнее, только если разработчик совсем дефективный.
Итог
Ни к чему Вас не подводим, вывод делайте самостоятельно. Всего хорошего!
*Организация Meta, а также её продукт Facebook, на который мы ссылаемся в этой статье, признаны экстремистскими на территории РФ.
Оставьте комментарий