Skip to content

Nuxt 3

Nuxt 3 memaparkan halaman di pelayan secara lalai. Skrip CDN dan elemen tersuai mesti dimuatkan hanya di sisi klien. Plugin klien Nuxt adalah tempat paling kemas untuk melakukan ini.

Terminal window
npm install @wink/elements

Suffix .client.ts memberitahu Nuxt untuk menjalankan plugin ini hanya di pelayar:

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

Tambah ke .env:

NUXT_PUBLIC_WINK_CLIENT_ID=your-client-id

Tambah pilihan penyusun isCustomElement supaya Vue tidak memberi amaran tentang tag <wink-*> yang tidak dikenali:

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

Balut komponen Wink dalam <ClientOnly> untuk mengelakkan ketidakpadanan 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>

Kembangkan HTMLElementTagNameMap global (sama seperti Vue 3) untuk mendapatkan autolengkap atribut. Lihat halaman integrasi Vue 3 untuk fail deklarasi penuh.