Solid.js 기초
Solid.js는 React와 유사한 문법(JSX)을 사용하면서도, 내부적으로는 Svelte처럼 가상 DOM 없이 직접적인 DOM 업데이트를 수행하는 고성능 라이브러리입니다.
1. Solid.js의 철학
- No Virtual DOM: 가상 DOM의 오버헤드 없이 최적화된 업데이트를 수행합니다.
- Fine-grained Reactivity: 리액트와 달리 컴포넌트 전체가 다시 실행되지 않고, 변경된 특정 부분만 효율적으로 업데이트됩니다.
- JSX 활용: 리액트 사용자라면 아주 익숙하게 시작할 수 있습니다.
2. Signal (상태 관리)
Solid의 핵심은 Signal입니다.
import { createSignal } from "solid-js";
function Counter() {
const [count, setCount] = createSignal(0);
return (
<button onClick={() => setCount(count() + 1)}>
{count()}
</button>
);
}
3. 리액트와의 차이점
- 리액트 컴포넌트는 상태가 변할 때마다 함수 전체가 다시 실행되지만, Solid 컴포넌트는 단 한 번만 실행 됩니다. 이후에는 Signal을 구독하는 부분만 업데이트됩니다.
- 훅(Hooks)의 규칙 제약이 거의 없습니다.
4. 왜 Solid.js인가?
성능 벤치마크에서 거의 항상 최상위권을 유지하며, 리액트의 패러다임이 익숙하면서도 더 극단적인 성능을 원하는 개발자들에게 추천됩니다.