Qwik
Qwik 的可恢復性模型意味著 JavaScript 會延遲執行 — 僅在使用者互動時才執行。使用 useVisibleTask$ 來執行必須在元件可見時於瀏覽器中執行的程式碼。
@wink/elements npm package 安裝並載入帶有 TypeScript 型別的 CDN 套件。
npm install @wink/elements使用 useVisibleTask$ 載入
Section titled “使用 useVisibleTask$ 載入”useVisibleTask$ 是 Qwik 用於僅在瀏覽器中執行且立即執行的生命週期鉤子。將它放在你的根佈局中:
import { component$, useVisibleTask$ } from '@builder.io/qwik';import { load } from '@wink/elements';
export default component$(() => { useVisibleTask$(() => { load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); });
return ( <main> <Slot /> </main> );});在頁面中使用
Section titled “在頁面中使用”import { component$ } from '@builder.io/qwik';
export default component$(() => { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> <wink-lookup /> </main> );});TypeScript — 宣告 JSX 內建元素
Section titled “TypeScript — 宣告 JSX 內建元素”Qwik 使用自己的 JSX 命名空間。在宣告檔中擴充它:
import type { WinkContentLoaderAttributes, WinkLookupAttributes, WinkSearchButtonAttributes, WinkAccountButtonAttributes, WinkItineraryButtonAttributes, WinkShoppingCartButtonAttributes, WinkAppLoaderAttributes,} from '@wink/elements';
declare module '@builder.io/qwik' { namespace JSX { interface IntrinsicElements { 'wink-content-loader': WinkContentLoaderAttributes; 'wink-lookup': WinkLookupAttributes; 'wink-search-button': WinkSearchButtonAttributes; 'wink-account-button': WinkAccountButtonAttributes; 'wink-itinerary-button': WinkItineraryButtonAttributes; 'wink-shopping-cart-button': WinkShoppingCartButtonAttributes; 'wink-app-loader': WinkAppLoaderAttributes; } }}Qwik(基於 Vite)會將前綴為 PUBLIC_ 的變數暴露給瀏覽器:
PUBLIC_WINK_CLIENT_ID=your-client-id