Svelte

Addfox는 Svelte를 사용하여 확장을 개발할 수 있도록 지원하며, 컴파일 타임 최적화된 경량 경험을 제공합니다.

설치

프로젝트 생성 시 Svelte 템플릿 선택:

pnpm create addfox-app --framework svelte

또는 기존 프로젝트에 설치:

pnpm
npm
yarn
bun
pnpm 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

예시 코드

<!-- 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>

관련 링크