РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnuSpPlCP 31 of 90 menu
◀ ▶

Плагин для клиента в Nuxt

Не весь код плагина безопасно или возможно запускать на сервере. Объект window существует только в браузере. Если обратиться к нему в обычном файле app/plugins, рендер на сервере может завершиться ошибкой.

Давайте изучим клиентский плагин. Суффикс .client в имени файла говорит Nuxt: этот модуль подключать и выполнять только на клиенте. На сервере файл даже не загружается, поэтому обращение к window внутри него допустимо.

Пример window-size.client.js отдаёт ширину окна через provide:

export default defineNuxtPlugin(() => { return { provide: { windowWidth: () => window.innerWidth, }, }; });

На странице ширину читают так же, как другие поля из плагинов - через функцию useNuxtApp и имя с префиксом $:

<script setup> const { $windowWidth } = useNuxtApp(); </script> <template> <p> Width: {{ $windowWidth() }} </p> </template>

При первом заходе HTML с сервера может прийти без числа ширины, потому что клиентский плагин ещё не работал. После гидратации в браузере плагин выполнится, и значение появится на экране. Именно поэтому важен суффикс .client: сервер никогда не исполняет этот файл и не пытается прочитать window.

Создайте клиентский плагин, который через provide отдаёт язык браузера, и выведите его на странице.

Создайте клиентский плагин online.client.js, который сообщает через provide, есть ли у пользователя сеть, и покажите статус текстом Online или Offline.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить