Nuxt 3
يقوم Nuxt 3 بعرض الصفحات على الخادم بشكل افتراضي. يجب تحميل سكربتات CDN والعناصر المخصصة على جانب العميل فقط. إضافة عميل Nuxt هي أنظف مكان للقيام بذلك.
@wink/elements npm package قم بتثبيت وتحميل حزمة CDN مع أنواع TypeScript.
التثبيت
Section titled “التثبيت”npm install @wink/elementsإنشاء إضافة عميل
Section titled “إنشاء إضافة عميل”اللاحقة .client.ts تخبر Nuxt بتشغيل هذه الإضافة فقط في المتصفح:
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => { load({ clientId: useRuntimeConfig().public.winkClientId });});تكوين متغير وقت التشغيل
Section titled “تكوين متغير وقت التشغيل”export default defineNuxtConfig({ runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});أضف إلى .env:
NUXT_PUBLIC_WINK_CLIENT_ID=your-client-idتكوين Vue للعناصر المخصصة
Section titled “تكوين Vue للعناصر المخصصة”أضف خيار المترجم isCustomElement حتى لا يحذر Vue من علامات <wink-*> غير المعروفة:
export default defineNuxtConfig({ vue: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('wink-'), }, }, runtimeConfig: { public: { winkClientId: process.env.NUXT_PUBLIC_WINK_CLIENT_ID, }, },});الاستخدام في القوالب
Section titled “الاستخدام في القوالب”غلف مكونات Wink بـ <ClientOnly> لمنع عدم تطابق التهيئة في SSR:
<template> <main> <ClientOnly> <wink-content-loader layout="HOTEL" :id="layoutId" /> </ClientOnly> </main></template>
<script setup lang="ts">const layoutId = 'YOUR_LAYOUT_ID';</script>أنواع TypeScript
Section titled “أنواع TypeScript”قم بتمديد HTMLElementTagNameMap العالمية (نفس Vue 3) للحصول على إكمال تلقائي للسمات. راجع صفحة تكامل Vue 3 لملف التصريح الكامل.