В последнее время большую популярность в web разработке приобрело создание одностраничных приложений. На Javascript пишется весь пользовательский интерфейс, который отправляет http запросы на сервер и получает данные в формате json. Такая технология позволяет отделить разработку клиентской части от разработки серверной части и этим я объясняю успех подобных приложений в больших компаниях. Когда я сам разрабатываю одностраничные приложения меня не покидает мысль, что я что-то делаю не так. Приходится во многом дублировать логику обработки сущностей. На текущем проекте, мы используем Java на сервере и Typescript на клиенте и мне приходится описывать http обработчики на Java. При переходе в браузерный Typescript, информация об описанных обработчиках полностью теряется и приходится снова описывать способы доступа к ним. Описание полей сущностей дублируется в коде на сервере и на клиенте. Этой проблемы не было, когда мы использовали Javascript. Но оказалось, что гораздо лучше продублировать код, чем остаться без такого мощного средства проверки программы, как статическая типизация.

Я вижу два способа избавиться от дублирования.

Первый это использовать Kotlin и компилировать модель в Java и Javascript, а также использовать интерфейсы обработчиков в клиентской и серверной частях приложения. Второй способ это отказаться от работы с Dom в браузере и делать инкрементный рендеринг страниц на сервере. Это я и называю серверной генерацией страниц. У этого метода есть ряд преимуществ:

  • Рендеринг на сервере снимает нагрузку с клиента, что критично, например, на слабых телефонах
  • Упрощает индексацию страниц поисковиками
  • Ускоряет время отображения страницы, не надо дожидаться загрузки Javascript, компиляции и построения дерева
  • Приложение становится легче тестировать

К минусам я могу отнести повышение требований к производительности серверной части и усложнение развертывания приложения.

Я обязательно попробую применить этот метод в своем новом проекте.