Добрый вечер, у нас есть landing page на angular 4(да, мы не подумали и сделали landing на spa), есть несколько вариантов переделать его под СЕО. Первое это сделать SSR с помощью Angular Universal (немножко странно для Landing page), второе это перенести все из angular в обычный html(но тут разработчик говорит, что там используется множество плагинов и это будет не быстро, что для нас минус), и третий вариант, нельзя ли собрать проект Angular как множественный страничный сайт, т.е не SPA.
Здравствуйте, а можно тут по подробнее (я так понял у вас получилось с помощью SSR)? А то у нас сайт на angular 5 + ко всему статьи тянет из WP REST API.
Даша Циклаури, просто думаю на перед, подтянет ли оно тексты (для индексации) которые запрашиваются через WP rest Api или сразу ВСЕ переделывать, брать за основу WP, а API на Angular размещать на странице в iframe
Максим, вкратце вообще нет разницы что за апи, сервер-сайд рендеринг это история о выполнении одного цикла скриптов на стороне сервера и рендеринг ДОМ-дерева в строку хтмл, которую потом отдаешь
Даша Циклаури, прочитал...
правильно ли я все понял?
получается нужно установить/настроить Angular-Universal, перенести все из проекта на Angular и забыть про него.
И затем продолжать дальнейшую разработку на Angular-Universal?
Максим, забывать ни про что не нужно. Юниверсал - это движок (набор библиотек), которые позволяют при запросе из браузерной строки отдавать не просто index.html а уже отрендереную страницу. В итоге помимо настройки нужно помнить о:
1) разделении на 2 входные точки (2 модуля: серверный и браузерный) - это отправные точки с которых все стартует, дальше как правило прокидывается в AppModule и далее в AppComponent и по дереву. То есть в этих модулях нужно резолвить зависимости которые нужны для серверной и клиентской логики, например базовый адрес обращения к АПИ из серверного кода можно прописать один, а для клиентского другой (через название токена), а потом в общем модуле, например AppModule инжектить
2) маршрутизация
3) setTimeout/setInterval - эти штуки по умолчанию тоже будут исполняться на сервере и например вызов setInterval не позволит получить страницу, поскольку он зациклить сервер. Поэтому runOutsideAngular или через условный оператор проверять где исполняется код