Tovább a tartalomhoz

Nuxt 3

A Nuxt 3 alapértelmezés szerint a szerveren rendereli az oldalakat. A CDN szkripteket és az egyedi elemeket csak kliensoldalon lehet betölteni. Egy Nuxt kliens plugin a legjobb hely erre.

Terminál
npm install @wink/elements

A .client.ts kiterjesztés megmondja a Nuxt-nak, hogy ezt a plugint csak a böngészőben futtassa:

plugins/wink.client.ts
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => {
load({ clientId: useRuntimeConfig().public.winkClientId });
});

A futási idő változó konfigurálása

Szekció neve “A futási idő változó konfigurálása”
nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
public: {
winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID,
},
},
});

Add hozzá a .env fájlhoz:

NUXT_PUBLIC_WINK_CLIENT_ID=your-client-id

Add hozzá az isCustomElement fordító opciót, hogy a Vue ne figyelmeztesse az ismeretlen <wink-*> tagekre:

nuxt.config.ts
export default defineNuxtConfig({
vue: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('wink-'),
},
},
runtimeConfig: {
public: {
winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID,
},
},
});

Csomagold be a Wink komponenseket <ClientOnly>-ba, hogy elkerüld az SSR hidratációs eltéréseket:

<template>
<main>
<ClientOnly>
<wink-content-loader layout="HOTEL" :id="layoutId" />
</ClientOnly>
</main>
</template>
<script setup lang="ts">
const layoutId = 'YOUR_LAYOUT_ID';
</script>

Bővítsd a globális HTMLElementTagNameMap-et (ugyanaz, mint Vue 3-ban), hogy elérd az attribútumok automatikus kiegészítését. Lásd a Vue 3 integráció oldalát a teljes deklarációs fájlért.