Как использовать v-bind в css с Nuxt.js на стороне сервера

Я хочу иметь динамическую цветовую схему для своих страниц. На основе URL-адреса я отправляю запрос API, который извлекает цветовую схему из базы данных.

Для этого я извлекаю цвета из хука хранилища nuxtServerInit. Затем я использую v-bind() в CSS для динамического окрашивания компонентов.

Для справки https://vuejs.org/api/sfc-css-features.html#css-modules. Бывший:

    #main-container {
      max-width: 500px;
      margin: auto;
      background-color: v-bind('designTemplate.backgroundColor');
    }

Здесь designTemplate — это вычисляемая переменная, которая извлекает значение из хранилища.

Я использую ССГ. При проверке сгенерированных файлов я вижу, что цвета не привязаны к css, а отображаемая сервером страница не имеет требуемых цветов.

В сгенерированном файле я вижу

.class-name[data-v-15114cda]{background-color:var(--fec1f67e)}

Но переменная css fec1f7e не найдена в файле. Только во время гидратации цвета действительно применяются.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлять: Решил проблему. Использовал альтернативный способ выполнения моего требования.

Вместо использования v-bind в css я создал переменные css корневого уровня. Это было сделано в шапке моей страницы.

head() {
 return {
   style: [
        {
          cssText: `
            :root {
              --base-color: ${this.designTemplate.baseColor};
              --background-color: ${this.designTemplate.backgroundColor};
            }
          `,
          type: 'text/css'
        }
      ]
   }
}

Имея это на месте, я могу получить доступ к этим переменным во всех моих файлах и стилизовать их как:

    #main-container {
      max-width: 500px;
      margin: auto;
      background-color: v-bind('designTemplate.backgroundColor');
    }

Переменные css вводятся в заголовок html, и с генерацией на стороне сервера я получаю правильно окрашенную страницу, отображаемую сервером.

Другие вопросы по теме