Sử dụng với SvelteKit
Có thể triển khai FSD trong dự án SvelteKit, nhưng xảy ra xung đột do sự khác biệt giữa yêu cầu cấu trúc của dự án SvelteKit và các nguyên tắc của FSD:
- Ban đầu, SvelteKit cung cấp cấu trúc file bên trong thư mục
src/routes, trong khi ở FSD thì routing phải là một phần của layerapp. - SvelteKit đề xuất đặt mọi thứ không liên quan đến routing trong thư mục
src/lib.
Hãy thiết lập config
Phần tiêu đề “Hãy thiết lập config”import adapter from '@sveltejs/adapter-auto';import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config}*/const config = { preprocess: [vitePreprocess()], kit: { adapter: adapter(), files: { routes: 'src/app/routes', // move routing inside the app layer lib: 'src', appTemplate: 'src/app/index.html', // Move the application entry point inside the app layer assets: 'public' }, alias: { '@/*': 'src/*' // Create an alias for the src directory } }};export default config;Di chuyển file routing vào src/app.
Phần tiêu đề “Di chuyển file routing vào src/app.”Hãy tạo một layer app, di chuyển điểm đầu vào index.html của app vào đó, và tạo một thư mục routes.
Vậy, cấu trúc file của bạn nên trông như thế này:
Thư mụcsrc
Thư mụcapp
- index.html
- routes
- pages FSD Pages folder
Bây giờ, bạn có thể tạo các route cho pages trong app và kết nối các page từ pages với chúng.
Ví dụ, để thêm một home page vào dự án của bạn, bạn cần thực hiện các bước sau:
- Thêm một page slice bên trong layer
pages - Thêm route tương ứng vào thư mục
routestừ layerapp - Canh chỉnh page từ slice với route
Để tạo một page slice, hãy sử dụng CLI:
fsd pages homeTạo file home-page.svelte bên trong segment ui, truy cập nó bằng Public API
export { default as HomePage } from './ui/home-page.svelte';Tạo một route cho page này bên trong layer app:
Thư mụcsrc
Thư mụcapp
Thư mụcroutes
- +page.svelte
- index.html
Thư mụcpages
Thư mụchome
Thư mụcui
- home-page.svelte
- index.ts
Thêm page component của bạn vào bên trong file +page.svelte:
<script> import { HomePage } from '@/pages/home';</script>
<HomePage/>