Мне нужно получать из апи определенные данные. В том числе и компоненты. А потом включать их на страницу. Соответственно компонент, который этим занимается, должен получить какие-то пропсы, как минимум роут
Всё ещё не понятно, что именно ты делаешь. В каком виде "компоненты" приходят с API? Приходит определение компонента? Приходят экземпляры компонентов для вставки на страницу? Почему компонент, который будет этим заниматься (чем - этим?), должен получать пропсы, от кого и при чём тут роут?
Мне нужно, чтобы человек перешел по определенному адресу, я в компоненте взял его урл, отправил на сервер, сервер вернет мне, что должно быть на странице. Там может быть новость, товар, страница (причем на разных страницах может требоваться включать несколько разных компонентов) и так далее. В каком виде это придет и как я это обработаю на данный момент не имеет значения. Мне просто нужно каким-то образом получить текущий роут, подождать получения данных и потом включить на страницу некий html, который может включать vue компоненты. Выше я кидал кусок кода из доки, который бы меня вполне устроил. Но я не знаю как получить в нем роут. Если бы в него можно было передавать пропсы, это решило бы вопрос
звучит, как космический костыль
> сервер вернет мне, что должно быть на странице В каком виде? Просто шаблон для Vue? Эта часть сервера уже реализована? > нужно каким-то образом получить текущий роут location позволяет получить URL, history.state - состояние, если работа идёт с history API > html, который может включать vue компоненты Тогда приходит не HTML, а Vue шаблон. Правда ли, что все компоненты в нём - уже зарегистрированы в приложении? Если да - то действительно не сложно отрендерить. Можно написать своё решение или взять какой-нибудь https://github.com/alexjoverm/v-runtime-template Если нет - то надо решать задачу получения и регистрации этих компонентов. > Выше я кидал кусок кода из доки, который бы меня вполне устроил Этот кусок кода регистрирует компоненты, никак не влияя на содержимое, пока компонент не начнут использовать. > Если бы в него можно было передавать пропсы Передавать пропсы можно при создании экземпляра компонента (его использовании в шаблоне, или как полноценного приложения)
Мне самому эта гадость не нравится. Но таково требование. — как раз таки имеет большое значение Как эта информация поможет? Я приму данные и обработаю. На выходе получу, к примеру, что-то вроде <div><NewsComponent /></div>
>>Как эта информация поможет? самым прямым образом: для начала нужно понять, что тебе возвращает сервер, а потом уже от этого исходить и думать, как правильно все организовать если тебе сервер присылает обычный json - это одно, если данные/названия будущих компонентов - совсем другое, а если готовый html - уже третье
Для этого достаточно использовать либо библиотеку по ссылке выше, либо реализовывать аналог самостоятельно (в простом варианте - не сложно)
Серверной части пока вовсе нет. Возвращать собираюсь json, в котором будет указано, что находится на указанному урлу и что нужно показывать на странице. Вероятнее всего, в виде какого-то псевдонима компонента и пачкиданных, которые нужно включить на страницу
не очень понятно, зачем тебе вся эта головная боль, чем обычный REST не устраивает?
Или обычный традиционный SSR*
либу изучу, спасибо
Вопрос "зачем это всё" всё ещё интересен)
Потому что такое требуется. Это публичная часть сайта на vue. Там будут новости, страницы, товары в магазине и так далее. И все это имеет свои урлы. Префиксы юзать нельзя. Может быть /bla-bla - ссылка на новость /bla-bla-bla - ссылка на товар Соответственно в vue я никак не пойму что это такое и придется сперва спрашивать у сервера что по этому урлу находится, а потом подключать тот или иной компонент
Собственно, vue ssr я и пользую. Но изначального вопроса он не решает
у меня должен выводится div столько раз, какое будет значение выражения, но почему-то не выводится
С Vue SSR всё рендерится на сервере и получать с сервера шаблоны не требуется...
Сервер отдельно совершенно и сделан на php.
Number(poputInput) = 0. Там деление на ноль, получается бесконечность.
А vue-ssr тут где?
Я же задаю это значение в input
что где? У меня есть обычный апи на симфони. И есть отдельным контейнером vue ssr для фронта.
Но вычисляется res ровно один раз при выполнении функции data при инициализации компонента. Чтобы оно вычислялось реактивно, требуется вычисляемое свойство (computed)
Ок. А от кого клиент получает Vue шаблон?
> Соответственно в vue я никак не пойму что это такое > придется сперва спрашивать у сервера что по этому урлу Ничто не мешает от сервера получить { type: 'article', props: { articleData: { ... } } } И потом просто срендерить <article> с нужными пропсами. Не используя ни получение шаблона с сервера, ни компилятор на клиенте
так я именно так и хочу сделать. Видимо, неправильно описал
Ты писал > На выходе получу, к примеру, что-то вроде <div><NewsComponent /></div> Это совсем другое :) Получить любой шаблон для vue и получить информацию, какой компонент надо рендерить
я имел ввиду, что потом обработаю то, что получу от сервера
Обработка зависит от того, что приходит.
Обсуждают сегодня