Mike
в техносферу го завезли?
Mike
они ж решили упарываться по машинке там
Roman
на Golang'е есть что-то подобное https://prerender.io/ ?
Roman
т.е. server-side rendering динамических HTML5 приложений
Mike
лол неплохо
Mike
там вообще норм чуваки преподают
Mike
я захаживал несколько лет назад
Mike
прикольно было
Andrey
Mike
Roman
тут же по сути самая главная часть это headless browser и JavaScript в prerender.io всего лишь выполняет связующую часть не особо сказываясь на производительности
Mike
конечно нет смысла, при чем тут шустрость, если тебе тупо надо выполнить js, и какая разница, кто запустит этот процесс?
Mike
просто если сделать один шаг вперед
Mike
то prerender тоже не нужен
Mike
если проектируешь с нуля
Mike
ты просто бьешь свою аппку на две часть — клиент и сервер
Mike
и клиент с сервером общается через апи
Mike
а у самого клиента есть свой тоненький сервер на ноде
Mike
который рендерит страничку прежде чем ее отдать
Mike
конец
Roman
эммм, node на клиенте?
Roman
ты о чём?
Roman
клиент в данном случае это SPA, т.е. single page app
Mike
да
Mike
и у него есть bff
Mike
backend for frontend
Mike
в котором нет бизнеслогики
Mike
он проксирует все запросы к апи
Mike
и рендерит странички перед выдачей
Mike
не совместимо с темплейтными серверами
Mike
но они говно энивэй и за spa будущее
Roman
а на сервере 3 сервака в общем счёте: fileserver (Nginx, files), application-server (Business Logic & Data) и prerender-server (SPA SEO-support)
Mike
да
Mike
просто prerender.io нихуя не гибкий
Mike
и он для приложений которые уже написаны
Mike
типа если нгинкс видит что поисковик пришел на твою джангу смотреть
Mike
то он через пререндер выпулит ее
Roman
именно, а какие альтернативы prerender'у ты представляешь?
Roman
раз уж говоришь что он "менее гибкий", менее чем... ?
Mike
я ж говорю, сам просто нодой рендеришь
Mike
причем как хочешь и с какими хочешь параметрами
Mike
ну вот у меня реакт приложения
Roman
пожалуйста)
Mike
тысячи их
Mike
я на bff в ноде делаю ReactDOM.renderToString() и рендерю свои компоненты
Mike
потом могу зная что они делают асинхронные запросы к серверу при маунте сам их выполнить и положить в страничку результат в тег скрипт
Mike
а на клиенте потом из тега скрипт их забрать, а если нет уже делать запрос
Mike
а если через пререндер это сделать, он не дождется резолва промисов
Mike
отдаст без изначального контента
Mike
и гугл не проиндексирует его
Roman
я на Vue.js работаю, реакт мне чужда)
Mike
ну суть в промисах
Mike
которые пререндер не дожидается
Roman
аа, вот ты про что
Roman
т.е. предположим сайт на котором список товаров который подгружается с API постредством асинх. JS, prerender не отобразит их?
Roman
да, это жуть
Roman
хммм
Roman
по сути нужно каким то образом headless browser'у сообщить когда snapshot'ить сайт
Mike
типа того
Mike
только я вообще не браузером это делаю как написал
Mike
а сам делаю запросы и вбрасываю в страничку ррезультаты
Roman
простым console.log'ом конечно костыль но вариант?
Mike
а на клиенте уже не запрашиваю если вброшены
Roman
чёт не могу представить твой архитектурный подход
Roman
в голове смоделировать
Roman
фишка в react?
Roman
или это и с Vue реально?
Mike
ну типа есть у меня объект
Mike
который я хочу отрендерить по урлу /object/id
Mike
на сервер приходит такой запрос, я запрашиваю у апи его поля, и отдаю хтмл в котором написано
<script>
window.stuff = { field, field2 }
</script>
Mike
на клиенте смотрю, если window.stuff не пустой, то рендерю его
Mike
а если пустой (потому что я из роутера пришел местного, а не по урлу) — запрашиваю
Roman
Mike
угу
Mike
ну и заодно нода реактовские компоненты рендерит
Mike
а не отдает на клиент пустой шаблон чтобы тот сам его компонентами заполнял