Nuxt 3
Nuxt 3 merender halaman di server secara default. Skrip CDN dan elemen kustom harus dimuat hanya di sisi klien. Plugin klien Nuxt adalah tempat paling bersih untuk melakukan ini.
@wink/elements npm package Pasang dan muat bundel CDN dengan tipe TypeScript.
Pasang
Section titled “Pasang”npm install @wink/elementsBuat plugin klien
Section titled “Buat plugin klien”Suffix .client.ts memberi tahu Nuxt untuk menjalankan plugin ini hanya di browser:
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => { load({ clientId: useRuntimeConfig().public.winkClientId });});Konfigurasikan variabel runtime
Section titled “Konfigurasikan variabel runtime”export default defineNuxtConfig({ runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});Tambahkan ke .env:
NUXT_PUBLIC_WINK_CLIENT_ID=your-client-idKonfigurasikan Vue untuk elemen kustom
Section titled “Konfigurasikan Vue untuk elemen kustom”Tambahkan opsi compiler isCustomElement agar Vue tidak memperingatkan tentang tag <wink-*> yang tidak dikenal:
export default defineNuxtConfig({ vue: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('wink-'), }, }, runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});Gunakan di template
Section titled “Gunakan di template”Bungkus komponen Wink dengan <ClientOnly> untuk mencegah ketidaksesuaian hidrasi SSR:
<template> <main> <ClientOnly> <wink-content-loader layout="HOTEL" :id="layoutId" /> </ClientOnly> </main></template>
<script setup lang="ts">const layoutId = 'YOUR_LAYOUT_ID';</script>Tipe TypeScript
Section titled “Tipe TypeScript”Perluas HTMLElementTagNameMap global (sama seperti Vue 3) untuk mendapatkan autocompletion atribut. Lihat halaman integrasi Vue 3 untuk file deklarasi lengkap.