Skip to content

Nuxt 3

Nuxt 3 privzeto upodablja strani na strežniku. CDN skripte in prilagojeni elementi morajo biti naloženi samo na strani odjemalca. Nuxt vtičnik na strani odjemalca je najčistejši način za to.

Terminal window
npm install @wink/elements

Pripona .client.ts pove Nuxtu, da ta vtičnik zažene samo v brskalniku:

plugins/wink.client.ts
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => {
load({ clientId: useRuntimeConfig().public.winkClientId });
});
nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
public: {
winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID,
},
},
});

Dodajte v .env:

NUXT_PUBLIC_WINK_CLIENT_ID=your-client-id

Konfigurirajte Vue za prilagojene elemente

Section titled “Konfigurirajte Vue za prilagojene elemente”

Dodajte možnost isCustomElement v prevajalnik, da Vue ne opozarja na neznane oznake <wink-*>:

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

Obkrožite Wink komponente z <ClientOnly>, da preprečite neusklajenost hidracije SSR:

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

Razširite globalni HTMLElementTagNameMap (enako kot v Vue 3), da dobite samodejno dokončanje atributov. Celotno datoteko deklaracije si oglejte na strani Vue 3 integracije.