Client Side на Vue и пререндеринг, как увязать вместе?
Собственно говоря, вся суть вопроса в топике.
Небольшие детали - сервер может отдавать как сгенерированный html, так и сырые данные в json формате.
Клиент построен на vue.js
Задача не столько получить изоморфное приложение, сколько предварительный рендеринг странички, для улучшения seo.
Существует даже плагин для webpack, но не в этом суть.
Я никак не пойму, если бы к примеру, клиентский код был написан с применением jquery, то все просто - сервер выплюнул html, скрипты подгрузились, привязались к dom и дальше выполняют необходимые запросы к апи, для получения данных с последующим рендерингом при определенных событиях.
Идеология vue, в корне иная.
Своя модель, свой шаблон и привязываться дом-дереву к построенному, на основе html ответа сервера, vue не станет. Не под это он заточен.
Т.е. вопрос даже в чем получается, полученный при первом запросе к серверу html ни какого участия в дальнейшем не примет, а просто будет перерисован? И получается все равно выполнять дополнительный запрос, для получения данных... и так далее? А отрисованная на сервере страничка, исключительно для поисковых роботов.
Да все верно, пререндеринг годен только для SEO, vue о готовой раpметке ничего не знает и по новой все отрендерит, что кстати даже заметно будет. Хотите лучше делайте SSR можно попробовать Nuxt.
Я уже смотрел в эту сторону, но концепцию не пойму. Вот бы, на пальцах кто объяснил не вдаваясь в подробности, как это работает. По сути - сервер с клиентом обмениваются строчками (ну в упрощенном понимании), и как потом клиентская часть взаимодействует с полученным с сервера html. Тут даже, на мой взгляд не важен используемый на сервере ЯП (яваскрипт, питон, пхп). Клиент и сервер - это разные приложения, клиенту без разницы откуда конкретно получать данные. Хотя не в этом даже дело. В общих чертах, концепцию изоморфного приложения я представляю. И она заключается не только SSR, хотя ноги растут именно от туда. Но вот как включается, отрисованный на сервере html, в работу на клиенте не пойму. Nuxt это будет или другой изоморфный фреймворк, понятно - один используемый язык для сервера и клиента, одна кодовая база, вытекающие из этого плюшки. Но в конечном счете работа клиента и сервера - это разные процессы и окружения без какой-либо программной связи (как один класс взаимодействует с другим или модель с контроллером) и клиент может только запросы посылать на сервер, а сервер вообще только отвечать, при условии что мы не ведем речь о сокетах. Или грубо говоря, тот же Nuxt, в конечном итоге просто привязывается к dom дереву, построенному по html, в свою очередь отрисованному на сервере? Тогда я не понимаю назначения этого фреймворка, это можно и на vanila js сотворить.
Алексей, изоморф - концепция, ssr - вариант реализации. В случае с vue мы исполняем приложение на сервере и отдаем отрендеренный результат на клиент + клиентский бандл, в данном случае vue уже понимает что его отрендерили на сервере и не будет выполнять лишнюю работу. Это если совсем уж простыми словами. Это уже не просто "обмен строками", а уже более жесткая связь и это допустимо, хотя ssr обычно в отдельном сервисе.