İçeriğe geç

Nuxt 3

Nuxt 3 sayfaları varsayılan olarak sunucuda render eder. CDN scriptleri ve özel elementler yalnızca istemci tarafında yüklenmelidir. Bunu yapmak için en temiz yer bir Nuxt istemci eklentisidir.

Terminal window
npm install @wink/elements

.client.ts eki, Nuxt’a bu eklentiyi yalnızca tarayıcıda çalıştırmasını söyler:

plugins/wink.client.ts
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => {
load({ clientId: useRuntimeConfig().public.winkClientId });
});

Çalışma zamanı değişkenini yapılandırın

Section titled “Çalışma zamanı değişkenini yapılandırın”
nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
public: {
winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID,
},
},
});

.env dosyasına ekleyin:

NUXT_PUBLIC_WINK_CLIENT_ID=your-client-id

Vue’yu özel elementler için yapılandırın

Section titled “Vue’yu özel elementler için yapılandırın”

Vue’nun bilinmeyen <wink-*> etiketleri hakkında uyarı vermemesi için isCustomElement derleyici seçeneğini ekleyin:

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

SSR hidratasyon uyumsuzluklarını önlemek için Wink bileşenlerini <ClientOnly> ile sarın:

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

Öznitelik otomatik tamamlama için global HTMLElementTagNameMap’i (Vue 3 ile aynı) genişletin. Tam bildirim dosyası için Vue 3 entegrasyon sayfasına bakın.