Введение
Динамические веб приложения (SPA, Single Page Applications) становятся все более популярными. Их использование позволяет упростить и ускорить разработку и поддержку за счет следующий преимуществ:
- не требуется server-side рендеринг;
- сайт — это набор статических файлов (html, js, css, images, fonts), которые лежат на CDN;
- нет затрат на масштабирование frontend;
- код frontend локализован в одном проекте. (Раньше часть кода была на server-side, часть в frontend.);
- уменьшение затрат на разработку backend (только API);
- уменьшение нагрузки на backend (только API запросы);
- возможность вместо собственного backend использовать сервисы типа (https://scaphold.io), микросервисы, lambda.
Из популярных библиотек для SPA хочется отдельно выделить ReactJS. Его использование позволяет создавать сложные веб приложения быстро и просто, сохранить скорость разработки на большой базе кода, избежать регрессионных ошибок при добавлении новых функций.
Большой нерешенной проблемой SPA является их полная несовместимость с веб краулерами поисковых систем (индексация сайтов) и социальных сетей (sharing в соц. сетях). На текущий момент краулеры не выполняют на своей стороне javascript и поэтому не могут получить содержимое SPA в виде html кода. В 2015 году Google официально отказался от поддержки выполнения javascript кода на своей стороне.