Đây là một ứng dụng demo Svelte + Vite, chuẩn bị để tích hợp 3D viewer (HOOPS/WebGL) sau này.
svelte-hello/
├── src/
│ ├── main.js # Entry point của ứng dụng
│ ├── App.svelte # Component chính
│ ├── app.css # Global styles
│ ├── components/
│ │ ├── Header.svelte # Header component
│ │ └── ViewerContainer.svelte # Container cho 3D viewer
│ └── lib/
│ └── Counter.svelte # Counter component mẫu
├── public/ # Static assets
├── index.html # HTML template
├── vite.config.js # Vite configuration
├── svelte.config.js # Svelte configuration
└── package.json # Dependencies
Clone hoặc tải project về máy
Cài đặt dependencies:
npm install
npm run dev
Ứng dụng sẽ chạy tại http://localhost:5173 (hoặc port khác nếu 5173 đã được sử dụng)
npm run build
Tạo build tối ưu trong thư mục dist/
npm run preview
Xem trước bản build production tại local
Component gốc của ứng dụng, chứa layout chính với Header và ViewerContainer.
Hiển thị tiêu đề và mô tả ứng dụng.
Container dành cho việc tích hợp 3D viewer trong tương lai. Component này:
onMount để khởi tạo viewer khi component được mountonDestroyĐể tích hợp HOOPS hoặc WebGL viewer, chỉnh sửa ViewerContainer.svelte:
onMount(() => {
// Uncomment và implement các function này
initViewer(viewerEl);
return () => {
destroyViewer();
};
});
Project sử dụng Svelte 5 với cú pháp mới:
$state runes cho reactive state (xem Counter.svelte)onMount và onDestroy lifecycle hooksapp.cssĐã cấu hình:
checkJs: true - Type checking cho JavaScriptmoduleResolution: "bundler"Cấu hình cơ bản với Svelte plugin, có thể mở rộng thêm:
// Thêm alias, proxy, v.v...
⚠️ Lưu ý: HMR không preserve local component state mặc định.
Nếu cần giữ state quan trọng, tạo external store:
// src/stores/viewer.js
import { writable } from 'svelte/store'
export const viewerState = writable({
isLoaded: false,
model: null
})
Chi tiết: svelte-hmr documentation
Vite sẽ tự động chọn port khác. Hoặc chỉ định port cụ thể trong vite.config.js:
export default defineConfig({
plugins: [svelte()],
server: {
port: 3000
}
})
Chạy lại:
npm install
Nếu cần routing và SSR, có thể migrate sang SvelteKit. Project structure đã tương thích để dễ migration.
MIT
Để biết thêm chi tiết về Svelte, xem Svelte documentation.