Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2017, 16:45
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

universal.angular Проблемы отрисовки компонент МатериалДизайн
Я поставил к себе https://universal.angular.io/
при помощи CLI https://www.npmjs.com/package/universal-cli

Все работает. Отлично. Реализовал пример Тур Героев из мануала https://angular.io/docs/ts/latest/tutorial/toh-pt1.html

Тоже работает.

Далее установил https://material.angular.io/
И слегка подправил Тур Героев, внедрив туда <button> и <md-input-container>
https://material.angular.io/components/component/input

Понятное дело, клиентская часть заработала. А вот рендеринг на сервере не работает. Например нет доступа к методу hasAttribute DOM-элемента. Потому что в Универсале нет эмуляции этого метода. И возможно вообще всех.

Было предложено решение подменить на сервере компонент <md-input-container> на свою заглушку, которая избавлена от обращения к функционалу браузера.

Но это решение неудобно тем, что придется много писать заглушек.

Я нашел решение, включив schemas: [ CUSTOM_ELEMENTS_SCHEMA ] в @NgModule. Рендеринг при этом происходит. Не рендерятся лишь проблемные компоненты. Уже лучше. Хоть что-то рендерится, хоть что-то будет проиндексировано. И клиентский рендеринг при этом не ломается.

Есть ли нормальное решение этой проблемы? Чтобы рендеринг был полным?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2017, 17:23
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

khusamov,
Ребята из Kendo UI пишут, что их компоненты рендерятся на сервере без проблем.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2017, 23:24
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Сообщение от destus Посмотреть сообщение
khusamov,
Ребята из Kendo UI пишут, что их компоненты рендерятся на сервере без проблем.
Они хотят 999 баксов))) дорогова-то...

Да и вообще, вопрос не в выборе UI, а в том, чтобы заставить Универсал рендерить все, что ему подсунут, а не выборочно.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2017, 08:00
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от khusamov Посмотреть сообщение
Они хотят 999 баксов))) дорогова-то...

Да и вообще, вопрос не в выборе UI, а в том, чтобы заставить Универсал рендерить все, что ему подсунут, а не выборочно.
Ну может когда-то и будет работать стабильно с каждым компонентом. Но пока это все сыро. Универсал бета, ангуляр нужно даунгрейдить до 2.2 чтобы с универсалом запустить. Возможно, с ангуляр 4 с этим будет более интересно.

Вот обсуждение этого на гитхабе https://github.com/angular/material2...ment-275361791. Есть предложенные варианты хаков, сам не использовал. Может будет полезно

Последний раз редактировалось destus, 12.02.2017 в 08:25.
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2019, 03:41
Новичок на форуме
Отправить личное сообщение для antt Посмотреть профиль Найти все сообщения от antt
 
Регистрация: 08.04.2019
Сообщений: 6

Меня тоже интересует вопрос импорта CUSTOM_ELEMENTS_SCHEMA. Когда я скомпоновал первый рабочий вариант приложения, то именно импорт этого элемента помог его запустить. Иначе никак не работало.
Тогда я не имел возможности, скорее всего, посмотреть дебаг
в хром-браузере (inspect element).
В справке ангулара пишет что Custom-Element-Schema:
Defines a schema that allows an NgModule to contain the following:
Non-Angular elements named with dash case (-).
Element properties named with dash case (-). Dash case is the naming convention for custom elements.
То есть это значит что любой, например html элемент с '-' требует
такого импорта?? В нете також почитал что такая ошибка при отсутвие такой схемы возникает при присутствие например тега btn - что возможно имело место в моем случае (прошло уже около двух месяцев).
Теперь мне надо конвертировать мой проэкт в lazy-loaded module, как тогда включить этот импорт, куда?? Также я понимаю что при такой конвертации - много тестов spec's не будут работать??
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разметка для Google closure compiler monolithed Оффтопик 11 04.09.2013 00:50
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37