← 홈

💠

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

기초

설정

npx degit solidjs/templates/ts my-app TypeScript 프로젝트 생성
npx degit solidjs/templates/js my-app JavaScript 프로젝트 생성
npm run dev 개발 서버 시작
npm run build 프로덕션 빌드

기본 컴포넌트

Hello World
import { render } from "solid-js/web";

function App() {
  return <h1>Hello, World!</h1>;
}

render(() => <App />, document.getElementById("root")!);

반응성

시그널

createSignal
import { createSignal } from "solid-js";

function Counter() {
  const [count, setCount] = createSignal(0);
  
  return (
    <button onClick={() => setCount(count() + 1)}>
      Count: {count()}
    </button>
  );
}

// Update patterns
setCount(5);              // Direct value
setCount(prev => prev + 1); // Functional update
createEffect
import { createSignal, createEffect, onCleanup } from "solid-js";

function Timer() {
  const [count, setCount] = createSignal(0);
  
  createEffect(() => {
    // Runs when count changes
    console.log("Count is", count());
    
    const timer = setInterval(() => setCount(c => c + 1), 1000);
    
    // Cleanup function
    onCleanup(() => clearInterval(timer));
  });
  
  return <div>{count()}</div>;
}
createMemo
import { createSignal, createMemo } from "solid-js";

function App() {
  const [firstName, setFirstName] = createSignal("John");
  const [lastName, setLastName] = createSignal("Doe");
  
  // Derived/computed value
  const fullName = createMemo(() => {
    return `${firstName()} ${lastName()}`;
  });
  
  return <div>{fullName()}</div>;
}

스토어

createStore

스토어 기초
import { createStore } from "solid-js/store";

function TodoApp() {
  const [state, setState] = createStore({
    todos: [
      { id: 1, text: "Learn Solid", done: false },
      { id: 2, text: "Build app", done: false }
    ],
    filter: "all"
  });
  
  const addTodo = (text: string) => {
    setState("todos", todos => [
      ...todos,
      { id: Date.now(), text, done: false }
    ]);
  };
  
  const toggleTodo = (id: number) => {
    setState("todos", todo => todo.id === id, "done", done => !done);
  };
  
  return (
    <For each={state.todos}>
      {todo => <div onClick={() => toggleTodo(todo.id)}>{todo.text}</div>}
    </For>
  );
}

제어 흐름

제어 컴포넌트

Show & For
import { Show, For, Switch, Match } from "solid-js";

function App() {
  const [show, setShow] = createSignal(true);
  const [items] = createSignal(["a", "b", "c"]);
  
  return (
    <>
      {/* Conditional rendering */}
      <Show when={show()} fallback={<p>Hidden</p>}>
        <p>Visible</p>
      </Show>
      
      {/* List rendering */}
      <For each={items()}>
        {(item, index) => (
          <div>{index()}: {item}</div>
        )}
      </For>
    </>
  );
}
Switch & Dynamic
import { Switch, Match, Dynamic } from "solid-js";

function App() {
  const [status, setStatus] = createSignal("loading");
  const [component, setComponent] = createSignal(ButtonComponent);
  
  return (
    <>
      {/* Switch/Match */}
      <Switch fallback={<p>Unknown</p>}>
        <Match when={status() === "loading"}>
          <Loading />
        </Match>
        <Match when={status() === "error"}>
          <Error />
        </Match>
        <Match when={status() === "success"}>
          <Content />
        </Match>
      </Switch>
      
      {/* Dynamic component */}
      <Dynamic component={component()} onClick={() => {}} />
    </>
  );
}

리소스

데이터 페칭

createResource
import { createResource, Suspense, ErrorBoundary } from "solid-js";

const fetchUser = async (id: number) => {
  const res = await fetch(`/api/users/${id}`);
  return res.json();
};

function UserProfile(props: { userId: number }) {
  const [user, { mutate, refetch }] = createResource(
    () => props.userId,
    fetchUser
  );
  
  return (
    <ErrorBoundary fallback={<div>Error loading user</div>}>
      <Suspense fallback={<div>Loading...</div>}>
        <div>{user()?.name}</div>
        <button onClick={refetch}>Refresh</button>
      </Suspense>
    </ErrorBoundary>
  );
}

컨텍스트

컨텍스트 API

createContext
import { createContext, useContext } from "solid-js";

const ThemeContext = createContext<"light" | "dark">("light");

function ThemeProvider(props: { children: any }) {
  const [theme, setTheme] = createSignal<"light" | "dark">("light");
  
  return (
    <ThemeContext.Provider value={theme()}>
      {props.children}
    </ThemeContext.Provider>
  );
}

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return <button class={theme}>Click me</button>;
}