Как связать Vue.js с php?

Как передать данные в шаблоны Vue из php? Компонент вью подключается к странице через src в script. Как например вы подставляете значения в компонент vue из php?

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Feed</title>
</head>
<body>

<div id="app">
    <feed></feed>
</div>

<script src="/bundle.js"></script>

</body>
</html>

Весь основной код шаблона описан в bundle.js. Сама страница прогоняется через php движок для подстановки значений через шаблонизатор(Было во времена без Vue, и не очень хочется переделывать подстановки данных в шаблоны с сервера php). Не очень хочется раскрывать bundle.js и вставлять код на страницу напрямую(естественно так будет подстановка через <?=$var?>).

Или лучше связать front с backend через ajax запросы к api?
  • Вопрос задан
  • 6627 просмотров
Решения вопроса 1
nexmean
@nexmean
погромист
>Или лучше связать front с backend через ajax запросы к api?
This.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Пользуют вот такой вариант:
из php
echo sprintf("<script>var json_data = '%s';</script>", json_encode($arr));

иногда можно всунуть в виде тега в html какой-нибудь base64, чтобы потом из яваскрипта распознать. ну разные способы есть.
Ответ написан
ajaxtelamonid
@ajaxtelamonid
Laravel
На php генерится шаблон страницы вместе с блоком script , где в переменную, например, windows.init_data присваивается json. В js-приложении данные из window.init_data передаются в стор или в стейт главного компонента.
Ответ написан
Комментировать
@adrontek
в HTML
<input type="hidden" id="data" value="<?= json_encode(['a1' => $a1, 'a2' => $a2]) ?>">

в JS
JSON.parse(getElementById('data').value);

Наверно не самое лучшее решение, но плюсов достаточно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽