Qwik
โมเดล resumability ของ Qwik หมายความว่า JavaScript จะทำงานแบบขี้เกียจ — ทำงานก็ต่อเมื่อผู้ใช้โต้ตอบเท่านั้น ใช้ useVisibleTask$ เพื่อรันโค้ดที่ต้องทำงานในเบราว์เซอร์เมื่อคอมโพเนนต์ปรากฏบนหน้าจอ
@wink/elements npm package ติดตั้งและโหลด CDN bundle พร้อมกับ TypeScript types.
ติดตั้ง
หัวข้อที่มีชื่อว่า “ติดตั้ง”npm install @wink/elementsโหลดด้วย useVisibleTask$
หัวข้อที่มีชื่อว่า “โหลดด้วย useVisibleTask$”useVisibleTask$ คือ lifecycle hook ของ Qwik สำหรับโค้ดที่ทำงานเฉพาะฝั่งเบราว์เซอร์และทำงานทันที วางไว้ใน root layout ของคุณ:
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> );});ใช้ในหน้าเพจ
หัวข้อที่มีชื่อว่า “ใช้ในหน้าเพจ”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 intrinsics
หัวข้อที่มีชื่อว่า “TypeScript — ประกาศ JSX intrinsics”Qwik ใช้ namespace JSX ของตัวเอง ขยายได้ในไฟล์ declaration:
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