Добрый день.
У меня сейчас интересная проблема. У нас есть сторонний сервер, который предлагает переводы для stati c html контента. Мне нужно получить этот контент через Ajax и отобразить его в моих Vue компонентах.
Текущая ситуация Эти переводы извлекаются через словарную структуру данных, то есть через категорию и ключ. Мы включили плагин Vue для загрузки их в наши компоненты с помощью функции t
, например:
<template>
<section>
<h1>{{ t('CommonHeaders', 'HomePage') }}</h1>
<p v-html="t('Articles', 'SiteDescription')"></p>
</section>
</template>
На данный момент эти переводы отправляются в браузер путем встраивания их в HTML, после чего наш клиентский механизм гидратации считывает их и добавляет их в хранилище Vuex. Затем функция t
ищет переводы и отображает их там, где это необходимо. Эти переводы являются реактивными и принимают параметры данных для форматирования переводов.
Мы используем Vue SF C для рендеринга пользовательских потоков в стиле SPA, хотя сайт еще не является SPA.
Проблема Чтобы это работало, переводы, необходимые для страницы, должны быть перечислены в методах внутреннего контроллера в словаре. Это стало необслуживаемым, и гораздо больше данных отправляется на внешний интерфейс, чем необходимо. Кроме того, внутренняя система не имеет определенной конечной точки, когда страница создается перед ее отправкой в браузер, к которому мы можем подключиться, чтобы добавить переводы к HTML, и содержимое часто заканчивается дублированием. Внутренняя система была построена с использованием Do tNet MVC 4, поэтому на данный момент у нас нет возможностей SSR.
Решение (надеюсь) Чтобы лучше поддерживать наш код, я хотел бы использовать функцию 't' из плагина для загрузки переводов с помощью вызова AJAX до того, как механизм vue отобразил шаблон, то есть с помощью beforeCreate или созданный крючок. Проблема в том, что экземпляр Vue должен знать о переводах, необходимых в шаблонах дочерних компонентов, прежде чем вызов AJAX может быть запущен, и я понятия не имею, как это сделать sh.
На примечании задержка рендеринга, как это, идет вразрез со всеми моими инстинктами, но не похоже, что у нас есть выбор на данный момент. Я планирую кэшировать на стороне клиента переводов контент ha sh на случай, если они будут обновлены, поэтому, надеюсь, вызовы ajax не потребуются очень часто, только при первой загрузке. Сайт постепенно превращается в SPA, после чего я смогу отделить FE и использовать SSR через узел. Вплоть до этого момента, хотя это лучшая идея, которую я мог придумать.
Любая помощь будет принята с благодарностью.