Skip to content

Nuxt 3

Nuxt 3 pagal numatytuosius nustatymus puslapius atvaizduoja serveryje. CDN scenarijai ir pasirinktinių elementų reikia įkelti tik kliento pusėje. Nuxt kliento papildinys yra švariausia vieta tai padaryti.

Terminal window
npm install @wink/elements

.client.ts priesaga nurodo Nuxt vykdyti šį papildinį tik naršyklėje:

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

Konfigūruokite vykdymo laikotarpio kintamąjį

Section titled “Konfigūruokite vykdymo laikotarpio kintamąjį”
nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
public: {
winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID,
},
},
});

Pridėkite į .env:

NUXT_PUBLIC_WINK_CLIENT_ID=your-client-id

Konfigūruokite Vue pasirinktiniams elementams

Section titled “Konfigūruokite Vue pasirinktiniams elementams”

Pridėkite isCustomElement kompiliatoriaus parinktį, kad Vue nerodytų įspėjimų apie nežinomus <wink-*> žymenis:

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

Apvyniokite Wink komponentus <ClientOnly>, kad išvengtumėte SSR hidratacijos neatitikimų:

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

Išplėskite globalų HTMLElementTagNameMap (kaip ir Vue 3), kad gautumėte atributų automatinį pildymą. Visą deklaracijos failą žr. Vue 3 integracijos puslapyje.