Почему рендеринг универсального сервера Angular 2 имеет динамический атрибут angular?

Я пытаюсь понять поведение универсального рендеринга на стороне сервера.

Я смотрю https://github.com/angular/universal-starter/tree/angular-connect.

Мое первое понимание заключалось в том, что версия, отображаемая на стороне сервера, должна быть свободна от всех динамических атрибутов html, сгенерированных angular, а затем angular load, и установить его динамический атрибут, как он хочет, но прозрачно для меня.

Действительно, я заметил, что индекс, сгенерированный на стороне сервера, имеет прямую аннотацию angular. Например:

<app _ngcontent-wwg-34="">

(Имя атрибута не является константой).

Правильно ли я думаю, что этот атрибут создается на стороне сервера (nodejs)?

Какая польза от этого атрибута?

Как это используется на стороне клиента?

Моя конечная цель - использовать серверную часть java (без nodejs): мне нужно будет следовать какой-то стратегии для создания такого рода атрибутов и поддерживать их в сеансе или что-то в этом роде?

Спасибо за чтение!


person Etienne    schedule 04.07.2016    source источник


Ответы (1)


Имя атрибута не является константой

Я не понимаю, что вы имеете в виду. Каждому компоненту присваивается другое имя атрибута. Они уникальны для каждого типа компонентов. Имя атрибута не должно изменяться для одного и того же типа компонента между перезагрузками.

_ngcontent-wwg-34=""

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

person Günter Zöchbauer    schedule 04.07.2016
comment
Я только что перепроверил, но имя атрибута меняется при каждом обновлении. В любом случае, даже если вы думаете, что это ненормально, имя атрибута не входило в мой первоначальный вопрос, поэтому я считаю, что вы ответили на часть моего вопроса: спасибо, Гюнтер! Мне все еще интересно, как мне сделать, чтобы сгенерировать его с помощью серверной части java? - person Etienne; 04.07.2016
comment
Я предполагаю, что серверный рендерер по-прежнему отображает динамически, но на сервере, а не на клиенте. Думаю, в универсальном репо есть документы, как настроить его со всеми типами серверов (сам еще не пробовал). Я предполагаю, что имена атрибутов станут статическими (такими же после перезагрузки), когда применяется автономный компилятор шаблонов (OTC) (независимо от универсального). OTC уже включен в RC.4, но не полностью функциональный AFAIK. - person Günter Zöchbauer; 04.07.2016