mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-09-30 16:23:01

SolidJS

웹 프레임워크 기술
{{{#!wiki style="margin:0 -10px"
{{{#!folding [ 펼치기 / 접기 ]
{{{#!wiki style="margin:-5px 0px -10px; word-break:keep-all"
$ 유료 포함 • 취소선 단종 및 중단
<colbgcolor=#f6f6f9,#2f3241> 프론트엔드 <colbgcolor=#fcfcfd,#272935> CSS Bootstrap Tailwind CSS Bulma Foundation Skeleton Pico
JSX React SolidJS Astro Preact Gatsby Remix Inferno Qwik
JS Angular Svelte Backbone.js jQuery Astro htmx Ember.js Lit 11ty Marko VanJS Alpine.js
Vue Vue.js VuePress Gridsome Quasar Astro
Python Reflex
백엔드 Java Spring Struts GWT Grails Jooby Play! Framework Scala
Kotlin Ktor
JS Express NestJS koa Hono fastify
.NET ASP.NET$
PHP Laravel Codeigniter Reasonable phalcon Symfony zend CakePHP FuelPHP Yii Slim PHPixe
Python Django Flask FastAPI
Ruby Ruby on Rails Sinatra
Go Gin echo Fiber
풀스택 JSX Next.js Astro SolidStart Remix Qwik City
JS SvelteKit Fresh Astro Marko
Vue Nuxt.js Astro
Java Vaadin$
Python Streamlit Reflex
Rust Rocket Actix Leptos Axum
하이브리드 .NET Blazor
Dart Flutter
Kotlin Kotlin Multiplatform
}}}}}}}}} ||


<colbgcolor=#fff,#1f2023><colcolor=#446B9E,#85BDE6> 솔리드JS
SolidJS
파일:SolidJS.svg
제작자 Ryan Carniato
분류 라이브러리
출시 2021년 6월 28일
언어 JavaScript
버전 1.9.0
라이선스 MIT 라이선스
파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg 파일:GitHub 아이콘 화이트.svg | | 파일:디스코드 아이콘.svg
1. 개요2. 특징
2.1. React와의 차이점
3. 예시4. SolidStart5. 관련 문서

[clearfix]

1. 개요


SolidJS는 2021년 정식 출시한 오픈 소스 프론트엔드 라이브러리이다.

2. 특징

React 에서 사용하는 JSX 문법을 사용하며, 가장 빠른 성능과 가장 정확한 반응성을 강점으로 내세우고 있다. 나온지 얼마 안 됐음에도 벌써 Cloudflare, Netify 등 주요 클라우드 업체에서 주목받고 사용하는 라이브러리다.

Svelte처럼 가상DOM을 사용하지 않는 라이브러리이다. 가상DOM 사용 및 미사용의 차이, 장단점은 React 와 Svelte 각 문서에 설명된 바 있다.

2.1. React와의 차이점

JSX 라이브러리의 원조인 React의 사용법과 이 Solid의 차이점은, 톺아보기를 통해서도 주요 차이점을 확인할 수 있다.

3. 예시

예를 들어, 두 개의 input 요소에서 숫자를 입력받고 그 숫자들을 더한 값을 출력해주도록 구현을 한다고 가정하자.

React 구현 예제.
#!syntax javascript
import React, { useState } from 'react';

export default () => {
  const [a, setA] = useState(1);
  const [b, setB] = useState(2);

  function handleChangeA(event) {
    setA(+event.target.value);
  }

  function handleChangeB(event) {
    setB(+event.target.value);
  }

  return (
    <>
      <input type="number" value={a} onChange={handleChangeA}/>
      <input type="number" value={b} onChange={handleChangeB}/>

      <p>{a} + {b} = {a + b}</p>
    </>
  );
};


그리고 본 문서인 SolidJS의 구현 예제. React 와 동일하게 JSX 문법으로 작성한다.
#!syntax javascript
import { createSignal } from "solid-js";

export default () => {
  const [a, setA] = createSignal(1);
  const [b, setB] = createSignal(2);

  function handleChangeA(event) {
    setA(+event.currentTarget.value);
  }

  function handleChangeB(event) {
    setB(+event.currentTarget.value);
  }

  return (
    <>
      <input type="number" value={a()} onChange={handleChangeA}/>
      <input type="number" value={b()} onChange={handleChangeB}/>

      <p>{a()} + {b()} = {a() + b()}</p>
    </>
  );
};

사실 이렇게 보면 React 와는 달리 함수 차이 말고는 별다른 문법적 차이는 없어 보인다. JSX 문법을 사용하고, 패턴도 React 와 차이가 없다.
그러나, React와 달리 라이브러리의 진가는 2가지로 나오는데, 바로 속도와 번들링 사이즈다.
한 개발자가 같은 앱을 React 와 SolidJS로 구현하여 비교(영문)한 포스트 본문에서는, 앱 자체 크기의 차이는 유의미할 정도는 아니지만, 웹에서 구동할 핵심 라이브러리 크기부터 차이가 엄청나며, 게다가 스크립트 읽기 속도에서 확실히 차이가 나며 렌더링 속도도 유의미하게 상승했음을 도출했다.

4. SolidStart

공식 문서

SolidJS에 라우터, SSR, SSG 등의 기능을 추가한 메타 프레임워크이다. Next.js, SvelteKit, Nuxt.js와 유사한 기능을 지원한다. 23년 8월 기준 아직 베타버전이다.

번들링 도구로 SvelteKit, Nuxt.js와 마찬가지로 Vite를 사용한다.

지원하는 기능 및 특징은 아래와 같다.

5. 관련 문서