В основном я backend и fullstack разработчик и техлид. Я выбираю инструменты разработчика на протяжении многих лет.
Для серверной части я выбрал Typesafe Stack. Это делает приложения реактивными и относительно простыми в масштабировании и обслуживании. И это весело кодировать на Scala.
Для фронтенда использую Angular.js, ранее это были Knockout.js, YUI, Mootools, jquery, vanilla.
Но с Angular.js я действительно запутался. Проблема не в самом инструменте, а в том, как развивается Интернет.
Цель состоит в том, чтобы ускорить приложение, сделать его более отзывчивым, реактивным, интерактивным. Это приводит нас к одностраничным приложениям. Angular.js подходит для этого.
Но.
Для современного приложения чрезвычайно важно отобразить первую страницу как можно скорее. Для одностраничного приложения это не может произойти до разрешения основного шаблона, затем загрузки всех скриптов, затем запуска приложения, маршрутизации запроса, затем запроса у сервера некоторых ресурсов REST, привязки его к шаблонам и последующего показа пользователю.
Много сетевых задержек ждать! Много последовательных запросов, идущих один за другим.
Таким образом, требуется долгое время, чтобы увидеть содержимое. Кроме того, это затрудняет индексацию с помощью поисковых систем и ограничивает доступность (режим чтения в Safari обычно не учитывает разметку, созданную angular.js).
Ну, проблему поиска можно решить с помощью таких инструментов, как prerender.io. Хорошо, даже если это выглядит некрасиво, но как насчет загрузки первой страницы?
Я слышал, что Твиттер наконец-то стал рендерить контент на бекенде, а потом оборачивать его скриптами. Как?
Я видел несколько проектов на node.js с той же целью. Они отображают контент с помощью того же javascript, который фактически получает клиент, и передают ему результат html. Затем оборачивает его, скажем, триггерами и кодами React.js или даже angular.js. Но что, если серверная часть Node.js не наш выбор?
Так что требования вполне естественны:
- Возможность (предварительно) рендерить контент на бэкенде
- Проводные скрипты на странице после ее загрузки
- Не заменяйте содержимое страницы чем-либо, сгенерированным скриптами.
- Используйте маршрутизацию html5 для всех остальных просмотров страниц
- Избегайте node.js, по крайней мере, не используйте его в качестве основной серверной технологии.
Я один против этой проблемы? Как вы думаете об этом?