Bỏ qua để đến nội dung

Astro

Astro mặc định không gửi kèm JavaScript và kết xuất tất cả các thành phần thành HTML tĩnh trên server. Các thành phần web Wink phải được tải qua thẻ <script> phía client. Kiến trúc island của Astro giúp việc này trở nên đơn giản.

Terminal window
npm install @wink/elements

Thêm script loader vào layout cơ sở của bạn để nó chạy trên mọi trang:

src/layouts/Layout.astro
<html lang="en">
<head>
<meta charset="utf-8" />
<title>My Site</title>
</head>
<body>
<slot />
<script>
import { load } from '@wink/elements';
load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID });
</script>
</body>
</html>

Vì các thành phần Astro được kết xuất trên server, các thẻ <wink-*> sẽ được xuất ra dưới dạng HTML tĩnh. Script CDN sẽ đăng ký các phần tử tùy chỉnh khi trang được tải trong trình duyệt:

src/pages/hotels.astro
---
import Layout from '../layouts/Layout.astro';
---
<Layout>
<main>
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />
<wink-lookup />
</main>
</Layout>

Nếu bạn dùng React, Vue hoặc Svelte islands cùng với Wink, hãy tải @wink/elements trong layout (như trên) và sử dụng các thẻ <wink-*> bên trong các thành phần island của bạn bình thường — các phần tử tùy chỉnh sẽ được đăng ký khi island được hydrate.

// src/components/HotelCard.tsx (React island)
export default function HotelCard({ layoutId }: { layoutId: string }) {
// load() đã được gọi bởi layout — an toàn để render ở đây
return <wink-content-loader layout="HOTEL" id={layoutId} />;
}
---
import HotelCard from '../components/HotelCard.tsx';
---
<HotelCard client:load layoutId="YOUR_LAYOUT_ID" />

Astro chỉ cho phép các biến có tiền tố PUBLIC_ được truy cập trong trình duyệt:

.env
PUBLIC_WINK_CLIENT_ID=your-client-id