Nuxt 3
Nuxt 3 renderer sider på serveren som standard. CDN-scripts og brugerdefinerede elementer skal kun indlæses på klientsiden. Et Nuxt klient-plugin er det reneste sted at gøre dette.
@wink/elements npm package Installer og indlæs CDN-bundtet med TypeScript-typer.
Installér
Sektion kaldt “Installér”npm install @wink/elementsOpret et klient-plugin
Sektion kaldt “Opret et klient-plugin”.client.ts-endelsen fortæller Nuxt at køre dette plugin kun i browseren:
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => { load({ clientId: useRuntimeConfig().public.winkClientId });});Konfigurer runtime-variablen
Sektion kaldt “Konfigurer runtime-variablen”export default defineNuxtConfig({ runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});Tilføj til .env:
NUXT_PUBLIC_WINK_CLIENT_ID=your-client-idKonfigurer Vue til brugerdefinerede elementer
Sektion kaldt “Konfigurer Vue til brugerdefinerede elementer”Tilføj isCustomElement compiler-indstillingen, så Vue ikke advarer om ukendte <wink-*> tags:
export default defineNuxtConfig({ vue: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('wink-'), }, }, runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});Brug i templates
Sektion kaldt “Brug i templates”Indpak Wink-komponenter i <ClientOnly> for at forhindre SSR hydration mismatch:
<template> <main> <ClientOnly> <wink-content-loader layout="HOTEL" :id="layoutId" /> </ClientOnly> </main></template>
<script setup lang="ts">const layoutId = 'YOUR_LAYOUT_ID';</script>TypeScript-typer
Sektion kaldt “TypeScript-typer”Udvid den globale HTMLElementTagNameMap (samme som Vue 3) for at få autoudfyldning af attributter. Se Vue 3 integrationssiden for den fulde deklarationsfil.