Точно так же, как нельзя судить о книге по обложке, вы никогда не должны судить о фреймворке по его названию. Тогда возникает вопрос: как вы оцениваете веб-фреймворк? Как и любое решение, необходимое для создания современного функционального веб-приложения, необходимо учитывать множество факторов. Вместо того, чтобы пытаться сделать окончательное заявление о том, какие фреймворки являются «лучшими» для использования прямо сейчас, в этой статье будет рассмотрено основное определение фреймворка, погружено в некоторые детали Express и Hapi, а также рассказано, почему нет конкретные «лучшие» фреймворки.

Что вообще такое фреймворк?

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

Зачем использовать фреймворк?

Фреймворк не требуется для написания и запуска функционального веб-приложения. Это, как говорится, только делает весь процесс лучше. Другой полезный онлайн-ресурс, который я недавно прочитал, сравнил то, как фреймворк предоставляет вам простые способы начать создание веб-приложения, с чем-то, что предоставило бы вам готовые стены, если бы вы начали строить дом. Я думаю, что это очень полезная аналогия. Что сразу пришло мне на ум, так это часы, проведенные за компьютерной игрой The Sims, когда я был ребенком. Чтобы построить дом для своего сима, вам просто нужно было придумать интересную планировку, а затем щелкнуть и перетащить, чтобы построить стену. Создатели The Sims умело абстрагировались от утомительной задачи укладки и приклеивания кирпичей к другим, чтобы медленно возводить стену, подобно тому, как создатели веб-фреймворков абстрагировались от утомительного кода, необходимого для базовых функций, которые требуются всем современным веб-приложениям. . Веб-фреймворки позволяют значительно сократить объем кода, который необходимо написать для создания функционального веб-приложения.

Далее мы совершим очень поверхностное погружение (подумайте о том, чтобы прыгнуть в детский бассейн) двух фреймворков Node.js, чтобы обсудить их особенности, сходства, различия, популярность и то, как вы можете их сравнивать. Будет ли превалировать один фреймворк? Если вы читали заголовок этой статьи, вы уже должны знать, что нет и не будет.

Экспресс и Хапи

Благодаря еще одной статье, которую я прочитал сегодня утром, у меня есть законный ресурс, подтверждающий мое личное мнение о том, что Express — это супер-фреймворк, который можно использовать и учиться. Согласно MDN, Express является самой популярной веб-платформой Node и даже базовой библиотекой для многих других веб-фреймворков Node. Первоначально выпущенный в ноябре 2010 года, Express описывает себя как быстрый, беспристрастный, минималистичный веб-фреймворк.

Считая себя минималистской структурой, Express не означает, что у него есть гардероб, состоящий всего из 12 связанных предметов, или что его квартира украшена только суккулентами на участках из белой глины, но вместо этого Express изначально имеет только базовую функциональность. Однако это не означает, что возможности Express ограничены. Express может решить практически любую проблему веб-разработки с добавлением библиотек промежуточного программного обеспечения. Например, я лично использовал парсер тела (который позволяет легко анализировать тело HTTP-запроса), парсер куки и сеанс куки (для управления куки-файлами пользователя), переопределение метода (для переопределить методы HTTP с помощью заголовка) и библиотеки промежуточного программного обеспечения morgan (для регистрации всех HTTP-запросов). Express также может интегрироваться с механизмами шаблонов, такими как EJS, чтобы легко создавать динамические веб-страницы и отвечать на них. Поскольку Express не имеет мнения, существует очень мало ограничений на использование функций, которые предлагает вам Express.

Запущенный всего год спустя, Hapi описывается как The Simple, Secure Framework. Первоначальные версии Hapi фактически использовали среду Express, однако в конечном итоге она превратилась в автономную среду после того, как разработчики почувствовали ограничения Express и то, что они считали недостающими функциями. Я видел, как Hapi описывают как богатую структуру, которая контрастирует с минималистским стилем Express. Hapi можно назвать богатым в том смысле, что по умолчанию он обладает большей функциональностью, чем Express. Например, в тех случаях, когда мне требовалось установить модули промежуточного программного обеспечения body-parser, cookie-parser и cookie session в Express, Hapi имеет встроенную возможность управлять этими экземплярами. Таким образом, Hapi более самоуверен, чем Express, поскольку существует больше правил, касающихся того, как использовать предоставляемые функции. Возможно, самая большая разница между Hapi и Express заключается в том, как Hapi использует плагины для расширения своих возможностей, тогда как Express использует промежуточное ПО.

Парадокс выбора

Поскольку мне еще предстоит использовать Hapi ни в одном из моих личных проектов, я долго просматривал их веб-сайт, чтобы узнать, что они говорят о себе, и одна строчка особенно запомнилась мне: «промежуточное ПО — это просто другое название плохого дизайна». Раздались выстрелы.

Hapi явно предпочитает то, что их фреймворк имеет больше встроенной функциональности, чем Express. Мое первое впечатление — согласиться с Хапи в том смысле, что было бы неплохо иметь возможность делать еще несколько вещей без необходимости исследовать, выбирать и устанавливать дополнительный модуль. При этом я также встречал в Интернете противоположные мнения, согласно которым разработчики предпочитают свободу находить и использовать конкретный модуль, который лучше всего подходит для их конкретной ситуации. В каком-то смысле это заставляет меня думать о Netflix. Удивительно иметь выбор между таким количеством разных шоу и фильмов, но иногда эта свобода парализует, и вы бы предпочли, чтобы ваш сосед по комнате сказал, что именно вы собираетесь смотреть этой ночью.

Время для конкурса популярности

Один из быстрых способов сравнить варианты разработки — посмотреть на количество еженедельных загрузок на NPM. На момент написания статьи у Express было около 10 миллионов загрузок в неделю, а у Hapi — около 130 000.

Имея это в виду, вы уже должны иметь представление о соотношении онлайн-ресурсов и справочных статей для Express по сравнению с Hapi, но это не означает, что вы всегда должны выбирать Express. Просто прочитав несколько страниц документации по Hapi, а также несколько захватывающих обзоров громких имен, Hapi определенно звучит как отличная альтернатива для экспериментов.

И победителем становится…

Ни один. Никто. Как сказали бы все ваши университетские профессора, прежде чем разобрать ваш ответ, правильного ответа не существует. Различные фреймворки проявляют себя в разных сценариях, и даже в этом случае ваш личный прошлый опыт и опыт вашей команды могут быть важным фактором. Прочитав несколько коротких руководств, я очень хочу попробовать различные функции Hapi, чтобы лично протестировать пользовательский опыт, и призываю вас сделать то же самое.

Независимо от того, какой фреймворк наиболее популярен в данный конкретный момент времени, с тем, как и со скоростью движется мир технологий, я могу только представить, что менее чем через три года кто-то может увидеть эту статью и подумать: с трепетом вспоминаю, когда Экспресс был чем-то особенным? Похоже на то, что я чувствую, когда думаю о тамагочи.

Ссылки