Skip to content

Nuxt 3

Nuxt 3 renderer sider på serveren som standard. CDN-skript og egendefinerte elementer må lastes kun på klientsiden. En Nuxt klient-plugin er det reneste stedet å gjøre dette på.

Terminal window
npm install @wink/elements

Suffixet .client.ts forteller Nuxt å kjøre denne pluginen kun i nettleseren:

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,
},
},
});

Legg til i .env:

NUXT_PUBLIC_WINK_CLIENT_ID=din-klient-id

Konfigurer Vue for egendefinerte elementer

Section titled “Konfigurer Vue for egendefinerte elementer”

Legg til isCustomElement compiler-alternativet slik at Vue ikke advarer om ukjente <wink-*>-tagger:

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

Pakk Wink-komponenter inn i <ClientOnly> for å forhindre SSR hydration-feil:

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

Utvid den globale HTMLElementTagNameMap (samme som Vue 3) for å få autokomplettering av attributter. Se Vue 3 integrasjonssiden for hele deklarasjonsfilen.