Изоморфные приложения подразумевают заднюю и переднюю стойки вместе?

Я занимался разработкой изоморфных приложений с Angular 2 Universal, но есть одна вещь, которую я не могу понять в моей голове.

Насколько я понимаю, держать заднюю и переднюю стороны на разных модулях - это хорошая практика, но при работе с MEAN Приложения.

Итак, я собираюсь начать проект, который может масштабироваться, и я хотел бы реализовать рендеринг на стороне сервера в будущем, но я не знаю, какой подход мне следует использовать. Честно говоря, я чувствую себя более комфортно, держа и бэкэнд, и внешний интерфейс отдельно, но, если это так, можно ли будет реализовать рендеринг на стороне сервера позже?

Кроме того, предположим, что я дублирую index.html сможет ли сервер делегировать управление клиенту после завершения первого рендеринга сервера? Я имею в виду, я не могу себе представить, как это будет работать этой делегацией, учитывая тот факт, что они не в том же проекте.

Заранее спасибо.

1 ответ

Решение

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

Этот предварительный рендеринг является всего лишь оптимизацией, вы можете сохранить его на каком-то отдельном уровне кода, но я считаю, что вся идея изоморфного javascript заключается в том, чтобы повторно использовать один и тот же код на клиенте и сервере. Этот способ попытки дублировать код и / или шаблоны не является хорошей идеей (это никогда не бывает).

Если вы действительно хотите разделить вещи, подумайте о том, чтобы разделить ваше приложение на несколько сервисов:

  • приложение серверного сервера - какой-то API отдыха поверх базы данных, который содержит всю бизнес-логику (первое приложение node.js)
  • серверное приложение внешнего интерфейса - другое приложение node.js, которое получает данные из API через HTTP-запросы и выполняет предварительный рендеринг на стороне сервера (второе приложение node.js)
  • интерфейс - весь код, запущенный в браузере

Таким образом, изначально "приложение сервера внешнего интерфейса" может быть простым прокси между "внешним сервером" и "приложением сервера внутреннего интерфейса". Позже вы можете расширить его с помощью рендеринга на стороне сервера.

Важное примечание: если вы собираетесь разрабатывать приложение без предварительного рендеринга на сервере и добавить его на более позднем этапе, необходимо учитывать, что не все функции JavaScript на стороне браузера будут работать на сервере (например, манипуляции с собственными элементами DOM), см. раздел " Лучшие практики" в угловом универсальном readme.

Другие вопросы по тегам