Современные фреймворки для разработки
web-приложений
А. А. Байдыбеков, к.воен.н. P. Г. Гильванов, магистр И. А. Молодкин Петербургский государственный университет путей сообщения Императора Александра I Санкт-Петербург, Россия baydibekov98@gmail.com, gilvanov1950@mail.ru, molodkin@pgups.ru
Аннотация. В настоящее время активно развиваются технологии web-программирования. В статье выполнен обзор популярных фреймворков, технологий (MVC) и инструментов, предназначенных для разработки web-приложений с учетом современных стандартов. Дана характеристика архитектуры и типы фреймворков. Рассмотрены популярные серверные (Django, Python, Zend, PHP, JavaScript) и клиентские (Angular, React, Vue, Spring) фреймворки и языки программирования, с которыми они работают. Указаны достоинства и недостатки каждого из рассмотренных инструментальных средств.
Ключевые слова web-технологии, фреймворк, разработка web-приложений, framework, MVC, Django, Python, Zend, PHP, Javascript, Angular, React, Vue, Spring.
Введение
В современном мире сложно представить крупную компанию и организацию без собственного web-приложения или сайта. Вместе с интересом организаций растет количество библиотек и фреймворков, нацеленных на облегчение разработки высококачественных web-приложений. Фрейм-ворки сильно изменили мир программирования и стали неотъемлемой частью web-разработки, так как стандарты приложений постоянно модифицируются и, как следствие, растет сложность технологии. Использование готовых инструментов и библиотек, одобренных тысячами разработчиков по всему миру, является разумным подходом для создания многофункциональных и интерактивных web-приложений. Выбор фреймворка — задача не самая сложная, но при выборе следует учитывать их достоинства и недостатки.
Архитектура и типы фреймворков
Фреймворк (англ. Framework — «каркас», «структура») — это динамически пополняемая библиотека языка программирования, в которой собраны его базовые модули. Фреймворки создаются для упрощения процессов разработки приложений, сайтов, сервисов. Чтобы не писать модуль в приложении с нуля, гораздо проще обратиться к готовым шаблонам фреймворков, которые и формируют рабочую среду разработчика.
Архитектура почти всех фреймворков основана на декомпозиции нескольких отдельных слоев (приложения, модули и т. д.) проекта. Это означает, что можно расширять функциональность приложения исходя из потребностей и использовать измененную версию вместе с кодом фреймворка или задействовать сторонние приложения. Такая гибкость является одним из одним из ключевых преимуществ использования фреймворков [1].
MVC (англ. Мойе1-¥1ем>-Соп1го11ег — «Модель-Представление-Контроллер») — концепция программирования, разделяющая классы на три группы, широко применяющаяся и при использовании фреймворков. Структура концепции представлена на рисунке 1.
Updates
/ Model >
\ /
Manipulates
Рис. 1. Концепция MVC
Модель содержит все данные и уровни бизнес-логики, ее правила и функции.
Представление отвечает за визуальное отображение данных, например: диаграммы, графики и т. д.
Контроллер просто трансформирует данные для команд предыдущих двух составляющих [2].
У фреймворков есть две основные функции: работа на серверной стороне (бэк-энд) и работа на клиентской стороне (фронт-энд). Клиентская часть — это в основном HTML, CSS и JavaScript и рассматривается она как способ представления информации пользователям. Серверная часть, как правило, является наиболее сложной и описывает всю бизнес-логику приложения. Веб-разработку серверной части можно выполнить на многих языках, таких как Java, Python, PHP и т. д.
Серверные фреймворки
Правила и архитектура таких фреймворков не дают возможности создать веб-приложение с богатым интерфейсом. Они ограничены в своей функциональности, однако все равно можно создавать простые страницы и разные формы. Также они могут формировать выходные данные и отвечать за безопасность в случае атак. Все это определенно может упростить процесс разработки. Сер-
верные фреймворки в основном отвечают за отдельные, но критически важные части приложения, без которых оно не сможет нормально работать. Вот несколько самых популярных фреймворков и языки, с которыми они работают: Django — Python, Zend — PHP.
Django
Высокоуровневый фреймворк, который является не только быстрым решением в веб-разработке, включающим все необходимое для качественного кода и прозрачного написания, но также и отличной платформой для работы с клиентурой того или иного бизнеса. Вместе с тем он удобен для разработчиков.
В Django реализован принцип DRY — Don't Repeat Yourself (рус. не повторяйся). То есть при использовании Django не нужно несколько раз переписывать один и тот же код. Фреймворк позволяет создавать сайт из компонентов. Благодаря этому сокращается время создания сайтов.
Фреймворк справляется с большим количеством задач и повышенными нагрузками. Его применяют для создания:
• CRM-систем (Customer Relationship Management) — систем управления отношениями с клиентами);
• CMS-систем (Content Management System) — систем управления содержимым (контентом) [3];
• коммуникационных платформ;
• сервисов бронирования номеров;
• платформ управления документооборотом [4].
Также Django подходит для создания алгоритмических
генераторов, платформ для электронных рассылок, систем верификации, систем фильтрации с динамическими правилами и сложными параметрами, платформ для анализа данных и сложных вычислений, машинного обучения.
Реализовано объектно-реляционное отображение (Object-Relational Mapping, ORM), которое обеспечивает взаимодействие приложения с базами данных (БД). ORM автоматически передает данные из БД, например PostgreSQL или MySQL, в объекты, которые используются в коде приложения. включает механизмы предотвращения распространенных атак вроде SQL-инъекций (XSS, англ. Cross-Site Scripting — «межсайтовый скриптинг») и подделки межсайтовых запросов (CSRF, или XSRF, англ. Cross-Site Request Forgery) [4].
Django REST Framework, который часто сокращают до DRF, является библиотекой для построения программного интерфейса приложения, API (Application Programming Interface). Он имеет модульную и настраиваемую архитектуру, которая хорошо работает для создания как простых, так и сложных API. В DRF политики аутентификации и разрешений доступны «из коробки». Он поставляется с базовыми классами для CRUD-операций и встроенной утилитой для тестирования разрабатываемого API [5].
Плюсы:
• масса библиотек, что позволяет не писать базовую функциональность, а только лишь импортировать необходимое;
• подробная документация и дружелюбное сообщество, поэтому всегда гораздо проще найти уже готовые решения или получить помощь от сообщества;
• Django позволяет начать с малого и масштабироваться по мере необходимости.
Минусы:
• Django не поддерживает WebSockets, поэтому он плохо подходит для работы в реальном времени;
• готовые библиотеки часто снижают гибкость, Django является большим и монолитным фреймворком, и его компоненты развертываются совместно.
Zend
Zend Framework — это объектно-ориентированная среда веб-приложений с открытым исходным кодом, представляющая собой набор профессиональных пакетов на основе PHP, разработанная и поддерживаемая компанией Zend. Это набор классов, большинство которых не привязаны к друг другу, а значит, их можно использовать как по запчастям в других проектах, так и полностью. В данном каркасе есть все, что нужно в современном web-проекте. Данный фреймворк, как правило, больше всего используют при разработке крупных коммерческих проектов. Такие компании, как Google, Microsoft и StrikeIron, сотрудничают с Zend, предоставляя интерфейсы для веб-сервисов и других технологий, которые они хотят сделать доступными разработчикам Zend. Компания участвует в разработке ядра языка программирования PHP [6].
Фреймворк использует различные пакеты, используя Composer как часть своих менеджеров зависимостей пакетов. Некоторые из них: PHPUnit для тестирования всех пакетов, Travis CI для служб непрерывной интеграции. Zend Framework предоставляет пользователям поддержку MVC в сочетании с решением Front Controller. Zend Framework следует стандартам PHP-FIG и включает реализацию PSR-7 для интерфейсов HTTP-сообщений. Поддержка нескольких систем баз данных и поставщиков, включая Mari-aDB, MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix Dynamic Server [7].
С помощью служб удаленного вызова процедур (Remote Procedure Call, RPC) и REST (англ. Representational State Transfer — «передача состояния представления») Zend Apigility помогает разработчикам создавать и документировать API.
Zend Server обеспечивает улучшенную производительность для PHP, и особенно приложений Zend Framework, за счет ускорения кода операции и нескольких возможностей кэширования, а также включает средства мониторинга и диагностики приложений. Zend Studio является интегрированной средой разработки приложений (Integrated Development Environment, IDE), которая включает функции, специально предназначенные для упрощения работы с Zend Framework. Она обеспечивает MVC-представление, генерацию кода MVC на основе Zend_Tool (компонент Zend Framework), предоставляет средства форматирования, анализа и исправления кода, помощь по параметрам и многое другое [8].
Достоинства:
• отлично подходит для разработки коммерческих веб-приложений;
• объектно-ориентированный подход к разработке;
• несвязанные компоненты для повторного использования в проектах.
Недостатки:
• тяжеловесный и ресурсоемкий, так как предоставляет разработчику массу возможностей и функций;
• не подходит для быстрой разработки проектов;
• недостаточно материалов для русскоязычного сегмента разработчиков.
Клиентские фреймворки
В отличие от серверных клиентские фреймворки никак не связаны с логикой приложения. Этот тип фреймворков работает в браузере. С их помощью можно улучшить и внедрить новые пользовательские интерфейсы. Фронт-энд-фреймворки позволяют создавать разные анимации и одностраничные приложения. Все клиентские фреймвор-ки отличаются по функциональности и использованию. Рассмотрим подробно некоторые из них, использующие язык JavaScript.
Angular
Angular — фреймворк с открытым исходным кодом, разработанный и поддерживаемый Google. Инструмент дает все необходимое для создания и управления динамическими front-end страницами для веб-приложения. В Angular имеется служба $http, которая обеспечивает взаимодействие с удаленными HTTP-серверами с помощью XMLHttpRequest или JSONP [9]. При передаче объекта JavaScript на сервер он будет автоматически преобразован в строку JSON. После получения ответа служба также попытается преобразовать полученную строку JSON в JavaScript. Используя службу $http можно создать собственную службу с полным контролем над обработкой URL и данных.
Angular создан для упрощения сложных процессов создания и управления JS-приложениями. Библиотека основана на обычном JS и HTML, поэтому Angular автоматически заботится о манипуляциях с DOM (англ. Document Object Model — объектная модель документа) и AJAX-запросах, которые в противном случае разработчикам пришлось бы писать самим. Инструмент предоставляет модульные строительные блоки кода JS, которые можно совмещать и тестировать. AngularJS можно быстро добавить на любую HTML-страницу с помощью простого тега. Благодаря поддержке TypeScript Angular является хорошим вариантом для разработки громоздких веб-приложений [10].
В Angular применяется двустороннее связывание: любые изменения в пользовательском интерфейсе сразу же отражаются на объектах приложения и наоборот. Фреймворк сам следит за событиями браузера, изменениями модели и действиями пользователя на странице, чтобы сразу обновлять нужные шаблоны. При этом в коде JavaScript не требуется хранить ссылки на DOM-элементы и явно ими манипулировать: просто описывается необходимый результат в терминах состояния модели и нет надобности использовать низкоуровневые конструкции.
Angular входит в пакет серверного программного обеспечения (ПО) MEAN, который также включает MongoDB, Express.js и Node.js [11]. Поэтому он позволяет управлять front-end и back-end проекта с помощью JavaScript. В качестве альтернативы для back-end можно использовать фреймворк Ruby on Rails (RoR), написанный на языке программирования Ruby.
Фреймворк применяется в разработке мобильных и веб-приложений. В дополнение к стандартному использованию одностраничного приложения с соответствующей библиотекой, такой как, например, Universal, возможно создание многостраничной версии. Что касается мобильной разработки, Google предоставил пользователям специальную платформу Ionic, нацеленную на создание и поддержку Native- и Progressive-приложений.
AngularJS построен по технике «functionality-first», поэтому фреймворк больше всего подходит для разработки сверху вниз. Модульная концепция AngularJS позволяет упростить разделение работы на разные команды в крупных проектах. В приоритете минимальное количество кода, поэтому приложения AngularJS, как правило, компактны и легки в редактировании.
Основные преимущества фреймворка Angular, повышающие скорость и производительность, — это синтаксис шаблона и интерфейс командной строки (Command Line Interface, CLI) для быстрого создания прототипов. Angular лучше всего подходит для написания одностраничных приложений, но его также используют и для разработки крупных корпоративных веб-приложений [12].
Плюсы:
• огромный информационный ресурс по изучению и обширное сообщество, предоставляющие программистам помощь при проектировании и разработке;
• декларативная парадигма программирования обеспечивает легковесность кода, что облегчает его чтение и поддержку;
• взаимозависимость функций, ввиду их связанности с компонентами и модулями;
• разбивка на модули позволяет загружать только нужные службы и эффективно выполнять автоматическое тестирование.
Минусы:
• сложный язык программирования, несмотря на то, что Angular использует Typescript 2.4;
• лишен гибкости при проектировании, так как очень «упрямый» и навязывает свою структуру разработчикам;
• поскольку Angular содержит интерактивные элементы встроенных страниц, страницы могут быть медленными;
• интеграционные ошибки, которые могут возникать при переходе от старой версии к новой.
React
ReactJS — это библиотека JavaScript, созданная Face-book в 2013 году, она превосходно подходит для создания масштабных веб-приложений, где данные могут меняться на регулярной основе.
React представил концепцию виртуального DOM, представляющий собой веб-страницы в браузере. React обладает собственным виртуальным DOM, который управляет фактическим DOM браузера и, так как он намного быстрее, чем DOM браузера, значительно повышает производительность. DOM React может создавать более 200 000 узлов в секунду, что превышает средний показатель узлов для большинства сайтов. Также он может воссоздавать изменения благодаря использованию алгоритма Diffing, который способен сократить вычисление разности от сложности O(n3) до O(n). DOM позволяет
объединять HTML-, XHTML- или XML-документы по определенным критериям, чаще всего в дерево, поэтому React отлично подходит для веб-браузеров при анализе разнообразных элементов веб-приложений [13].
Одной из замечательных особенностей React является введение JSX (расширения программного языка JavaScript). Необходимо понимать: JSX — это не HTML и не JavaScript. Прелесть JSX заключается в том, что он помогает разработчику визуализировать содержимое страниц, на нем гораздо проще писать, чем на традиционном JavaScript [12].
С точки зрения уровня сложности, React является одним из самых простых в освоении. Он основывается на легких языках программирования — достаточно вспомнить, как работает HTML. Не нужно глубоко изучать TypeScript, как в Angular, хватает поверхностных знаний. React приобрел известность благодаря архитектуре на основе компонентов, которую другие платформы начали использовать гораздо позднее. Такой структурный подход позволяет сравнительно быстро и просто создавать интерфейс. Стоит отметить, что библиотека направлена не только на создание пользовательского интерфейса одно-страничного веб-приложения (Single Page Application, SPA), но и на мобильную разработку.
Платформа React Native — это фреймворк, нацеленный на разработку кроссплатформенных высококачественных приложений для iOS и Android. Преимуществами данного инструмента являются разнообразие совместимых модулей (Browserify, RequireJS, ECMAScript 6 и другие), установленные компоненты, однонаправленный поток кода, библиотека Redux [14].
Плюсы:
• легкий вес базы данных; процессы, происходящие со стороны пользователя, могут быть легко задействованы на сервере;
• связывание между собой данных гарантирует неизменность родительских данных, дочерние элементы не могут изменять цепочку данных;
• открытая библиотека данных ежедневно совершенствуется благодаря открытому исходном коду;
• высокий уровень гибкости и максимальная отзывчивость.
Минусы:
• отсутствие упорядоченной документации, сверхбыстрый обмен решениями в ReactJS не оставляет места для упорядочения документации, документы размещены немного хаотично;
• слишком огромный выбор действий для решения определенных проблем — количество этих решений может сбить с толку;
• плохая кроссбраузерная поддержка.
Vue
По заявлению разработчиков, Vue — прогрессивный JavaScript-фреймворк для разработки пользовательского интерфейса. Отличительной чертой Vue от монструозных фреймворков является высокая степень адаптивности. Она заключается в ориентированности на уровень представления (View) и простоте интеграции других библиотек или в существующие проекты [15].
Vue позволяет разрабатывать сложные одностраничные приложения (SPA) за счет расширения HTML-атрибутов так называемыми директивами. Существуют как встроенные директивы, так и определяемые программистом.
Vue и рассмотренный ранее React очень похожи. Скорость работы обеих фреймворков очень высока, однако существуют некоторые нюансы функционирования Vue, на которые стоит обратить внимание.
В отличие от React, в котором изменение состояния компонента ведет к перерисовке всего поддерева этого компонента, Vue автоматически отслеживает зависимости компонентов. Такой подход позволяет системе точно знать, какие компоненты необходимо перерисовывать. Это устраняет необходимость целого класса оптимизаций.
В React все построено на JavaScript, Vue же охватывает классические веб-технологии и основывается на них.
React отличается сложностью изучения, поскольку для применения этого фреймворка необходимо владеть знаниями о JSX и ES2015+ и системах сборки. Все эти знания не являются обязательными для начала разработки на Vue [16].
По сравнению с Angular, Vue имеет слегка большую производительность [17].
Как уже было сказано ранее, для работы с Angular требуется знание TypeScript. Применение TypeScript имеет свои преимущества, такие, как проверка статических типов, однако это ведет к увеличению накладных расходов. Vue предоставляет официальные декларации типов и официальный декоратор для тех, кто хочет использовать TypeScript вместе с Vue.
API Angular содержит множество элементов и концепций, что требует большого времени для изучения. Все, что необходимо знать для работы с Vue — HTML и стандартный JavaScript.
Размер полнофункционального проекта с Vue (Vue Router + Vuex) значительно меньше, чем с Angular (~30 кБ против 65 кБ).
В отличие от Angular Vue позволяет использовать различные системы сборки, не ограничивая разработчиков в том, какую структуру использовать для приложения.
Разработка фреймворка началась в июле 2013 года и активно продолжается до сих пор.
Spring
Одним из самых популярных фреймворков для Java Enterprise Edition является Spring, который позволяет разрабатывать надежные и высококачественные приложения для различных сфер применения [18].
Фреймворк Spring разработан Родом Джонсоном в 2003 году как ответ на сложную спецификацию J2EE и включил в себя следующие спецификации:
- Servlet API (JSR 340);
- WebSocket API (JSR 356);
- Concurrency Utilities (JSR 236);
- JSON Binding API (JSR 367);
- Bean Validation (JSR 303);
- JPA (JSR 338);
- JMS (JSR 914).
Spring также поддерживает внедрение зависимостей (Dependency injections) и общие аннотации (Common annotations), которые могут быть применены вместо характерных для фреймворка механизмов [19].
Для работы с фреймворком версии 5.1 требуется JDK8+. Интегрирована поддержка JDK11 LTS, что обеспечивает полную совместимость с такими программами, как Tomcat 8 и 9, WebSphere 9 и т. д.
Существуют различные сценарии применения Spring как в больших серверных проектах, так и автономных приложениях, которые не требуют наличия облака.
Открытость исходного кода позволила привлечь к разработке фреймворка большое сообщество, которое непрерывно совершенствует его возможности и увеличивает сферу применения.
Фреймворк разделен примерно на 20 модулей, сгруппированных по назначению (рис. 2). При разработке приложений необходимо выбрать требуемые модули. Основу составляют модули контейнеров ядра (Core Container), которые включают конфигурационную модель и механизм внедрения зависимостей. Помимо этого, Spring предоставляет поддержку различных архитектур приложений, включая мессенджеры и веб. Также существует основанный на технологии сервлетов фреймворк Spring MVC WEB [20].
Рис. 2. Модули Spring
Группа модулей доступа к данным и интеграции (Data Access/Integration) призвана облегчить работу с различными БД и API. Так, например, модуль JDBC (Java DataBase Connectivity) избавляет от необходимости рутинного написания кода для работы с базами данных и обработки специфичных для конкретной БД ошибок, а модуль JMS (Java Messaging Service) содержит инструменты для создания и получения сообщений.
Модули Web предоставляют различные инструменты для работы с веб. Одноименный модуль позволяет организовать базовые веб-возможности, такие как загрузка файлов по частям, инициализация зависимостей в прослуши-вателях сервлетов и ориентированный на веб контекст приложений. Модуль сервлетов содержит реализацию веб-приложений по шаблону MVC, что позволяет интегрировать все в рамках одного фреймворка.
Поддержка фреймворков для тестирования JUnit и TestNG обеспечивается модулем Test.
Spring продолжает развиваться и разработчики внедряют в него новые возможности. Помимо самого фрейм-
ворка Spring существуют и другие проекты: Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch. Это создает целую экосистему для эффективной разработки ПО.
Заключение
Фреймворки для веб-разработки во многом похожи, даже если реализованы на разных языках программирования. Тем не менее каждый из перечисленных фреймвор-ков индивидуален. У них разные подходы, методы и поведение в разработке. Нельзя выбрать лучший фреймворк среди имеющихся, все зависит от того, с чем планируется работать [21-23]. Фреймворки имеют массу различных преимуществ и недостатков. Можно сравнить все функции и технологии, перечисленные в этой статье, чтобы было легче понять, какой из фреймворков лучше подходит для бизнеса или потребностей конкретного проекта, и сделать правильный выбор, наблюдая в итоге, как выбранные инструменты и библиотеки оказывают огромную помощь в работе.
Литература
1. Веб-фреймворки: введение для новичков. — 02.08.2018 I Пер. с англ. // Tproger —типичный программист. URL: http:IItproger.ruItranslationsIweb-frameworks-how-to-get-started (дата обращения: 03.08.2020).
2. Фрэйн, Б. HTML5 и CSS3. Разработка сайтов для любых браузеров и устройств. Второе издание = Responsive Web Desigh with HTML5 and CSS3. Second Edition / Пер. с англ. Н. Вильчинского. — Санкт-Петербург: Питер, 2017. — 272 с. — (Библиотека программиста).
3. Данжу, Д. Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию = Serious Python. Black-Belt Advice on Deployment, Scalability, Testing, and More / Пер. с англ. П. Ковалёва. — Санкт-Петербург: Питер, 2020. — 256 с. — (Библиотека программиста).
4. Форсье, Д. Django. Разработка веб-приложений на Python / Д. Форсье, П. Биссекс, У. Чан; пер. с англ. А. Киселева. — Санкт-Петербург: Символ-плюс, 2009. — 456 с. — (Серия «High tech»).
5. Django: The Web framework for perfectionists with deadlines. URL: http:IIwww.djangoproject.com (дата обращения: 01.08.2020).
6. Zend Framework 3 // Zend Framework — Documentation. URL: http://framework.zend.com/learn (дата обращения: 28.07.2020).
7. Зандстра, М. PHP: объекты, шаблоны и методики программирования. Пятое издание = PHP Objects, Patterns, and Practice / Пер. с англ. И. В. Берштейна; под ред. С. Г. Три-губ. — Санкт-Петербург: Диалектика, 2019. — 736 с.
8. Васвани, В. Zend Framework. Разработка веб-приложений на PHP = Zend Framework: A Beginner's Guide / Пер. с англ. Р. Тетерина. — Санкт-Петербург: Питер, 2012. — 432 c. — (Библиотека программиста).
9. Рейсиг, Д. JavaScript. Профессиональные приемы программирования = Pro JavaScript™ Techniques / Пер. с англ. Н. Вильчинского. — Санкт-Петербург: Питер, 2008. — 352 c. — (Библиотека программиста).
10. Angular. JavaScript-фреймворк // Habr.
URL: http:IIhabr.com/ruIhubIangular (дата обращения: 04.08.2020).
11. Angular. URL: http://angular.io (дата обращения: 04.08.2020).
12. Файн, Я. Angular и TypeScript. Сайтостроение для профессионалов = Angular 2 Development with TypeScript / Я. Файн, А. Моисеев; пер. с англ. Н. Вильчинского, Е. Зазнобы. — Санкт-Петербург: Питер, 2018. — 464 с. — (Библиотека программиста).
13. React. JavaScript-библиотека для создания пользовательских интерфейсов. URL: http://ru.reactjs.org (дата обращения: 03.08.2020).
14. Стефанов, С. React.js. Быстрый старт = React: Up & Running / Пер. с англ. Н. Вильчинского. — Санкт-Петербург: Питер, 2017. — 304 c. — (Серия «Бестселлеры O'Reilly»).
15. Vue.js — Introduction // Vue.js.
URL: http://vuejs.org/v2/guide/index.html (дата обращения: 08.12.2020).
16. Vue.js — Comparison with Other Frameworks // Vue.js. URL: http://vuejs.org/v2/guide/comparison.html (дата обращения: 08.12.2020).
17. Results for js web frameworks benchmark — round 4. Table Report — 12.09.2016 // Stefan_Krause.blog().
URL : http://stefankrause.net/js-frameworks-benchmark4/ webdriver-ts/table.html (дата обращения: 08.12.2020).
18. Spring Framework Overview. Version 5.3.2.
URL: http://docs.spring.io/spring-framework/docs/current/ reference/html/overview.html (дата обращения: 08.12.2020).
19. Spring 5 для профессионалов. Пятое издание = Spring 5. Fifth Edition / Ю. Козмина, P. Харроп, К. Шефер, К. Хо; пер. с англ. и ред. И. В. Берштейна. — Санкт-Петербург: Диалектика, 2019. — 1120 с.
20. Introduction to Spring Framework.
URL : http://docs. spring. io/spring-framework/docs/3.0.x/ spring-framework-reference/html/overview.html (дата обращения: 08.12.2020).
21. Мещеряков, Е. В. Публикация баз данных в интернете: Практическое руководство / Е. В. Мещеряков, А. Д. Хо-моненко. — Санкт-Петербург: БХВ-Петербург, 2001. — 552 с. — (Серия «Мастер»).
22. Хомоненко, А. Д. Разработка web-приложений для работы с базами данных: Учебное пособие / А. Д. Хомо-ненко, В. В. Рогальчук, А. В. Тырва. — Санкт-Петербург: ПГУПС, 2012. — 87 с.
23. Разработка приложений с Web-интерфейсом для работы с базами данных: Методические указания для студентов, обучающихся по направлениям «Информатика и вычислительная техника» и «Информационные системы и технологии» / Сост. В. В. Рогальчук, А. Д. Хомоненко. — Санкт-Петербург: ПГУПС, 2017. — 24 с.
Modern Frameworks for Web Development
A. A. Baidybekov, PhD R. G. Gilvanov, Master of Science I. A. Molodkin Emperor Alexander I Petersburg State Transport University Saint Petersburg, Russia baydibekov98@gmail.com, gilvanov1950@mail.ru, molodkin@pgups.ru
Abstract. Currently, web programming technologies are actively developing. The article provides an overview of popular frameworks, technologies (MVC) and tools designed for developing web applications taking into account modern standards. Characteristics of architecture and types of frameworks are given. Popular server-side (Django, Python, Zend, PHP, Javascript) and client-side (Angular, React, Vue, Spring) frameworks and programming languages with which they work are considered. The advantages and disadvantages of each considered tool are indicated.
Keywords: web technologies, web application development, framework, MVC, Django, Python, Zend, PHP, Javascript, Angular, React.
References
1. Web Frameworks: How To Get Started [Veb-freym-vorki: vvedenie dlya novichkov], Tproger. Published online at 02 Aug 2018.
Available at: https://tproger.ru/translations/web-frameworks-how-to-get-started (accessed 03 Aug 2020).
2. Frain B. Responsive Web Desigh with HTML5 and CSS3. Second Edition [HTML5 i CSS3. Razrabotka saytov dlya lyubykh brauzerov i ustroystv. Vtoroe izdanie]. St. Petersburg, Piter Publishing House, 2017, 272 p.
3. Danjou J. Serious Python. Black-Belt Advice on Deployment, Scalability, Testing, and More [Put' Python. Cher-nyy poyas po razrabotke, masshtabirovaniyu, testirovaniyu i razvertyvaniyu]. St. Petersburg, Piter Publishing House, 2020, 256 p.
4. Forcier J., Bissex P., Chun W. Django. Python web development with Django [Django. Razrabotka veb-prilozheniy na Python]. St. Petersburg, Symbol Plus Publishing House, 2009, 456 p.
5. Django: The Web framework for perfectionists with deadlines. Available at: http://www.djangoproject.com (accessed 01 Aug 2020).
6. Zend Framework 3, Zend Framework — Documentation. Available at: http://framework.zend.com/learn (accessed 28 July 2020).
7. Zandstra M. PHP Objects, Patterns, and Practice [PHP: ob"yekty, shablony i metodiki programmirovaniya]. St. Petersburg, Dialektika Publishers, 2019, 736 p.
8. Vaswani V. Zend Framework: A Beginner's Guide [Zend Framework. Razrabotka veb-prilozheniy na PHP]. St. Petersburg, Piter Publishing House, 2012, 432 p.
9. Resig J. Pro JavaScript™ Techniques [JavaScript. Pro-fessional'nye priemy programmirovaniya]. St. Petersburg, Piter Publishing House, 2008, 352 p.
10. Angular. JavaScript framework [Angular. JavaScript-freymvork], Habr [Khabr]. Available at: http://habr.com/ru/ hub/angular (accessed 04 Aug 2020).
11. Angular. Available at: http://angular.io (accessed 04 Aug 2020).
12. Fain Y., Moiseev A. Angular and TypeScript. Site building for professionals [Angular i TypeScript. Sayto-stroenie dlya professionalov]. St. Petersburg, Piter Publishing House, 2018, 464 p.
13. React. JavaScript library for creating user interfaces [React. JavaScript-biblioteka dlya sozdaniya pol'zovatel'skikh interfeysov]. Available at: http://ru.reactjs.org (accessed 04 Aug 2020).
14. Stefanov S. React: Up & Running [React.js. Bystryy start]. St. Petersburg, Piter Publishing House, 2017, 304 p.
15. Vue.js — Introduction, Vue.js.
Available at: http://vuejs.org/v2/guide/index.html (accessed 08 Dec 2020).
16. Vue.js — Comparison with Other Frameworks, Vue.js. Available at: http://vuejs.org/v2/guide/comparison.html (accessed 08 Dec 2020).
17. Results for js web frameworks benchmark — round 4. Table Report, Stefan_Krause.blog(). Published online at 12 September 2016. Available at: http://stefankrause.net/js-frameworks-benchmark4/webdriver-ts/table.html (accessed 08 Dec 2020).
18. Spring Framework Overview. Version 5.3.2. Available at: http://docs.spring.io/spring-framework/docs/ current/reference/html/overview.html (accessed 08 Dec 2020).
19. Cosmina I., Harrop R., Schaefer C., Ho C. Spring 5. Fifth Edition [Spring 5 dlya professionalov. Pyatoe izdanie]. St. Petersburg, Dialektika Publishers, 2019, 1120 p.
20. Introduction to Spring Framework.
Available at: http://docs.spring.io/spring-framework/docs/ 3.0.x/spring-framework-reference/html/overview.html (accessed 08 Dec 2020).
21. Meshcheryakov E. V., Khomonenko A. D. Publishing databases on the Internet [Publikatsiya baz dannykh v internete]. St. Petersburg, BHV-Peterburg, 2001, 552 p.
22. Khomonenko A. D., Rogalchuk V. V., Tyrva A. V. Developing web applications for working with databases: Study guide [Razrabotka web-prilozheniy dlya raboty s baza-mi dannykh: Uchebnoe posobie]. Saint Petersburg, PSTU, 2012, 87 p.
23. Rogalchuk V. V., Khomonenko A. D. Development of Web-based applications for working with databases: Guidelines [Razrabotka prilozheniy s Web-interfeysom dlya raboty s bazami dannykh: Metodicheskie ukazaniya]. Saint Petersburg, PSTU, 2017, 24 p.