Сообществом программистов принято разделять два направления web-разработки: FrontEnd (или разработка на стороне клиента) и BackEnd (или разработка на стороне сервера). Причем, ранее, на заре зарождения web, ожидалось, что основную нагрузку на себя возьмет серверная часть, т.к. сервера будут мощнее компьютеров пользователей. Оказалось же, что компьютеры пользователей по характеристикам ничем не отличаются от серверов. Поэтому нагрузка решений между сервером и клиентом распределена примерно поровну.
Рассмотрим три группы технологий: для Backend (серверные технологии), для Frondend (клиентские технологии) и общий инструментарий, который может быть использован как на сервере, так и на клиенте [2].
По сути, в понятие FrontEnd входит всего три технологии: HTML, CSS и JavaScript. Но перечень инструментов применяемых на стороне клиента значительно шире [3]. Это:
– язык разметки HTML;
– таблица стилей CSS;
– формат данных JSON;
– формат данных XML;
– язык программирования JavaScript;
– библиотека jQuery;
– библиотека классов Bootstrap 3, API Bootstrap – для адаптивной верстки;
– фрэймворк React, реализующий структуру приложения на стороне клиента в формате архитектурных шаблонов, таких как MVC (модель-вид-контроллер), HMVC (иерархические модель-вид-контроллер), MV-VM (модель-вид-пользователь-вид-модель) и MVW (модель-вид- 'что-то еще');
– HTML5 и API HTML5, а именно: видео и аудио, холст, перетаскивание, работа с файлами, геолокация (в том числе работа с GOOGLE и YANDEX-картами), web-хранилища, взаимодейтсвие с сервером. Вспомогательный инструментарий [4];
– генератор микроданных schema.org предоставляет микроформат данных для HTML [5].
Далее рассмотрим используемые серверные технологии, или BackEnd [6]:
– операционная система Xubuntu. Xubuntu (Ubuntu, Debian, Mint...) по сути, являются не просто операционными системами, но серверами.
– локальный сервер Apache2;
– web-интерфейс для Apache – Webmin;
– язык программирования PHP;
– язык программирования Java;
– язык программирования Python;
– язык программирования Node;
– база данных MySQL;
– система управления базой данных PHPMyAdmin;
– система управления виртуальными хостами Webmin;
– менеджер зависимостей для PHP Composer;
- контейнеры Docker;
– php-фрэймворк Laravel. [7]
Существует огромное количество инструментария для программирования как на стороне сервера, так и на стороне клиента, как платных, так и бесплатных. Воспользуемся бесплатным дистрибьютивом (за исключением PHPStorm, который хоть и является платным, но для преподавателей и студентов БГУИР предоставляется бесплатно). [8]
– Интегрированная среда разработки PHPShtorm;
– Система контроля версий Git;
– Программная платформа Node.js;
– Браузеры Firefox и Chrome;
– Отладчик кода на стороне клиента Firebug;
- Программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации - Docker.
– FTP-клиент FireFTP.
Для разработки web-приложения были установлены как серверные, так и клиентские технологии, а также подобран соответствующий инструментарий [2].