Изоморфные приложения подразумевают заднюю и переднюю стойки вместе?
Я занимался разработкой изоморфных приложений с Angular 2 Universal, но есть одна вещь, которую я не могу понять в моей голове.
Насколько я понимаю, держать заднюю и переднюю стороны на разных модулях - это хорошая практика, но при работе с MEAN
Приложения.
Итак, я собираюсь начать проект, который может масштабироваться, и я хотел бы реализовать рендеринг на стороне сервера в будущем, но я не знаю, какой подход мне следует использовать. Честно говоря, я чувствую себя более комфортно, держа и бэкэнд, и внешний интерфейс отдельно, но, если это так, можно ли будет реализовать рендеринг на стороне сервера позже?
Кроме того, предположим, что я дублирую index.html
сможет ли сервер делегировать управление клиенту после завершения первого рендеринга сервера? Я имею в виду, я не могу себе представить, как это будет работать этой делегацией, учитывая тот факт, что они не в том же проекте.
Заранее спасибо.
1 ответ
Как я понимаю, вы говорите о рендеринге пользовательского интерфейса, и это является частью вашего приложения, даже если вы выполняете предварительную работу на сервере.
Этот предварительный рендеринг является всего лишь оптимизацией, вы можете сохранить его на каком-то отдельном уровне кода, но я считаю, что вся идея изоморфного javascript заключается в том, чтобы повторно использовать один и тот же код на клиенте и сервере. Этот способ попытки дублировать код и / или шаблоны не является хорошей идеей (это никогда не бывает).
Если вы действительно хотите разделить вещи, подумайте о том, чтобы разделить ваше приложение на несколько сервисов:
- приложение серверного сервера - какой-то API отдыха поверх базы данных, который содержит всю бизнес-логику (первое приложение node.js)
- серверное приложение внешнего интерфейса - другое приложение node.js, которое получает данные из API через HTTP-запросы и выполняет предварительный рендеринг на стороне сервера (второе приложение node.js)
- интерфейс - весь код, запущенный в браузере
Таким образом, изначально "приложение сервера внешнего интерфейса" может быть простым прокси между "внешним сервером" и "приложением сервера внутреннего интерфейса". Позже вы можете расширить его с помощью рендеринга на стороне сервера.
Важное примечание: если вы собираетесь разрабатывать приложение без предварительного рендеринга на сервере и добавить его на более позднем этапе, необходимо учитывать, что не все функции JavaScript на стороне браузера будут работать на сервере (например, манипуляции с собственными элементами DOM), см. раздел " Лучшие практики" в угловом универсальном readme.