#Svelte
Addfox는 Svelte를 사용하여 확장을 개발할 수 있도록 지원하며, 컴파일 타임 최적화된 경량 경험을 제공합니다.
#설치
프로젝트 생성 시 Svelte 템플릿 선택:
pnpm create addfox-app --framework svelte또는 기존 프로젝트에 설치:
pnpm add @rsbuild/plugin-sveltenpm install @rsbuild/plugin-svelteyarn add @rsbuild/plugin-sveltebun add @rsbuild/plugin-svelte#구성
// addfox.config.ts
import { defineConfig } from "addfox";
import { pluginSvelte } from "@rsbuild/plugin-svelte";
export default defineConfig({
plugins: [pluginSvelte()],
});#프로젝트 구조
app/
├── background/
│ └── index.ts
├── content/
│ └── index.ts
├── popup/
│ ├── App.svelte
│ ├── index.html
│ └── index.ts
└── manifest.json#예시 코드
#Popup
<!-- app/popup/App.svelte -->
<script lang="ts">
let count = 0;
function increment() {
count += 1;
}
</script>
<div class="p-4">
<h1 class="text-xl font-bold">Hello Svelte!</h1>
<button
on:click={increment}
class="mt-2 px-4 py-2 bg-blue-500 text-white rounded"
>
Count: {count}
</button>
</div>
<style>
h1 {
color: #333;
}
</style>// app/popup/index.ts
import App from './App.svelte';
import './index.css';
new App({
target: document.getElementById('root')!,
});#Store
Svelte Store를 사용하여 상태 관리:
// app/stores/count.ts
import { writable } from 'svelte/store';
export const count = writable(0);
export function increment() {
count.update(n => n + 1);
}<script>
import { count, increment } from '../stores/count';
</script>
<button on:click={increment}>
Count: {$count}
</button>
