Vue 3
Το Vue 3 χρειάζεται μια υπόδειξη στον compiler για να αντιμετωπίζει τις ετικέτες <wink-*> ως εγγενή custom elements αντί για μη επιλυμένα Vue components. Μετά από αυτό, λειτουργούν όπως οποιοδήποτε άλλο στοιχείο HTML.
@wink/elements npm package Εγκαταστήστε και φορτώστε το CDN bundle με τύπους TypeScript.
Εγκατάσταση
Ενότητα με τίτλο «Εγκατάσταση»npm install @wink/elementsΔιαμόρφωση του compiler
Ενότητα με τίτλο «Διαμόρφωση του compiler»Vite + Vue (vite.config.ts)
Ενότητα με τίτλο «Vite + Vue (vite.config.ts)»import { defineConfig } from 'vite';import vue from '@vitejs/plugin-vue';
export default defineConfig({ plugins: [ vue({ template: { compilerOptions: { // Αντιμετωπίστε όλες τις ετικέτες που ξεκινούν με "wink-" ως custom elements isCustomElement: (tag) => tag.startsWith('wink-'), }, }, }), ],});Vue CLI (vue.config.js)
Ενότητα με τίτλο «Vue CLI (vue.config.js)»module.exports = { chainWebpack(config) { config.module .rule('vue') .use('vue-loader') .tap((options) => ({ ...options, compilerOptions: { isCustomElement: (tag) => tag.startsWith('wink-'), }, })); },};Φορτώστε το CDN μία φορά κατά την εκκίνηση της εφαρμογής
Ενότητα με τίτλο «Φορτώστε το CDN μία φορά κατά την εκκίνηση της εφαρμογής»import { createApp } from 'vue';import App from './App.vue';import { load } from '@wink/elements';
load({ clientId: import.meta.env.VITE_WINK_CLIENT_ID });
createApp(App).mount('#app');Χρήση σε πρότυπα
Ενότητα με τίτλο «Χρήση σε πρότυπα»<template> <main> <wink-content-loader layout="HOTEL" :id="layoutId" /> <wink-lookup /> </main></template>
<script setup lang="ts">const layoutId = 'YOUR_LAYOUT_ID';</script>TypeScript — επέκταση των τύπων παγκόσμιων στοιχείων
Ενότητα με τίτλο «TypeScript — επέκταση των τύπων παγκόσμιων στοιχείων»Το Vue 3 + TypeScript διαβάζει τους τύπους custom elements από το παγκόσμιο HTMLElementTagNameMap. Προσθέστε ένα αρχείο δήλωσης:
import type { WinkContentLoaderAttributes, WinkLookupAttributes, WinkSearchButtonAttributes, WinkAccountButtonAttributes, WinkItineraryButtonAttributes, WinkShoppingCartButtonAttributes, WinkAppLoaderAttributes,} from '@wink/elements';
declare global { interface HTMLElementTagNameMap { 'wink-content-loader': HTMLElement & WinkContentLoaderAttributes; 'wink-lookup': HTMLElement & WinkLookupAttributes; 'wink-search-button': HTMLElement & WinkSearchButtonAttributes; 'wink-account-button': HTMLElement & WinkAccountButtonAttributes; 'wink-itinerary-button': HTMLElement & WinkItineraryButtonAttributes; 'wink-shopping-cart-button': HTMLElement & WinkShoppingCartButtonAttributes; 'wink-app-loader': HTMLElement & WinkAppLoaderAttributes; }}Μεταβλητές περιβάλλοντος
Ενότητα με τίτλο «Μεταβλητές περιβάλλοντος»Προσθέστε στο .env.local:
VITE_WINK_CLIENT_ID=your-client-idΤο Vite εκθέτει μόνο τις μεταβλητές που ξεκινούν με VITE_ στο client bundle.