Svelte는 웹 애플리케이션을 구축하는 새로운 방법으로 선언적 구성 요소를 가져와서 DOM을 외과적으로 업데이트하는 효율적인 JavaScript로 변환하는 컴파일러다.
현재 많이 사용되는 프론트엔드 프레임워크는 크게 3가지가 있다. Angular, React, vueJS인데 이 녀석들을 위협하는 새로운 개발 방식이다. React를 사용해보고 React가 확실히 지원하는 기능도 많고 성능도 준수한데다 개발 포럼도 많아 개발하는데 큰 어려움이 없다. 아니 이제 좀 적응하려 하는데.. 요즘 React, VueJS 보다 좋다고 소문난 놈이 이놈이다.. 뭐 하나 적응할라하면 다른 놈이 기어나오네.. 프론트엔드 기술의 수명이 평균적으로 5년이라던데 정말인가보다. 그래도 좋다는데 안 알아볼 수 없다. 호호
다음 도표는 https://2019.stateofjs.com/front-end-frameworks/ 에서 확인 가능하다.
2019년도 프론트엔드 프레임워크 관심도 조사에서 1위를 했다. 만족도, 인지도 여부에 대해선 React가 이겼다. 무튼 그림에서 확인할 수 있듯이 프론트엔드 3대장을 누르고 많은 개발자들의 관심을 일으켰다. React, VueJS보다 빠르다니까 관심이 안생길 수 가 없다.
일단 React, VueJS와 본질적으로 다른데 SVELTE는 프레임워크가 아닌 컴파일러다. 이해를 위해 SVELTE와 React를 비교 설명해보면, React로 구성된 웹 앱의 경우 사용자가 브라우저를 통해 웹 사이트 방문시 2종류의 코드를 다운로드 받아야한다. React형태로 구성된 개발자가 짠 코드, 그리고 React 환경을 구성하기 위한 라이브러리 파일을 다운로드 받아야 정상적으로 웹 앱이 구동된다. 이는 사실상 당연한 얘기다. 우리가 Jquery를 사용할때도 코드 내부에 Jquery 참조를 넣어주었기 떄문에 가능한 일이다. 한마디로 이게 표준화된 방식이란 얘기다. 하지만 SVELTE는 Vanilla JS 기반이기 때문에 개발자가 짠 코드만 다운로드 받아 실행할 수 있다.
한마디로 SVELTE 기반 웹 앱의 경우 코드가 브라우저가 이해가능하도록 구성하기 때문에 별도의 환경구성 라이브러리가 필요하지 않다는 말이다.
환경 구성 라이브러리가 없기 떄문에 용량에서도 차이가 많이 나는데 거의 10배 이상의 차이를 보여준다. ‘Hello World’ 만 출력하는 React 웹 앱의 경우 가뿐히 40KB가 넘는 반면 SVELTE 기반의 웹 앱은 대략 3.5KB밖에 하지않는다. 이거만 봐도 이미 물리적으로도 가볍다는 것을 알 수 있다. 이것은 실제로 속도에서도 그 특징을 보이는데 다음은 각 콘텐츠별 속도를 보여준다.
그림에서 확인할 수 있듯 대체적으로 속도가 많이 개선됐다고 자랑했던 VueJS 3버전보다 빠르다. HTML 변경작업만 봐도 React대비 6배 빠른 성능을 보여준다. 이전 SVELTE는 Vanilla JS와 같은 속도라고 공표한 바 있다. Vanilla JS 기반이기 때문에 속도가 같을 수 밖에 없다.
또한 가상 돔을 사용하지 않는다. React와 VueJS의 경우 가상 돔을 활용한 반응형 웹을 구성한다. 가상 돔이란 우리가 눈알로 확인할 수 있는 웹 화면을 복사하여 React, VueJS core에 메모리로 저장된다. 이 메모리에 저장된 가상 돔을 통해 변경사항 체크를 하고 적용시키는게 React와 VueJS의 핵심인데 SVELTE는 가상 돔을 활용하지 않는다. 가시화된 문법과 기능을 활용하여 해당 영역만 재 렌더링한다. 와우 영특한 녀석 😀
❗ 그렇지만 가상돔을 활용한다고 무조건 느린 것은 아니다. 실제로 가상돔을 사용하는 프레임워크인 인페르노가 SVELTE보다 빠른 성능을 보여준다.
모든 컨텐츠가 그러하듯 장점과 단점이 있다. 하하 참나
1. 러닝 커브가 적고 코드가 간결해진다.
2. 작은 크기의 번들 파일
3. 빠른 처리 속도
1. 절망적인 커뮤니티 규모
2. 불친절한 오류 메세지
3. SVELTE 운영 주체는 기업이 아니다.
4. 엔터프라이즈 앱에는 적합하지 않다.
솔직히 이건 개개인 별로 다르긴 한데 틀딱 개발자의 노파심에 한마디 해보겠다. React나 간단하다고 얘기하는 VueJS의 경우에도 해당 프레임워크의 기술 학습이 필요하고 불편하지만 많은 것들을 경험할 수 있는 환경 구성이 요망된다. 처음부터 SVELTE를 시작하는 것은 그렇게 추천할만 하지 않다고 생각한다. 나도 틀니 낄 나이가 된 것 같다. 하하
용량도 작고, 속도도 빠르다.
하지만 어디서 오류가 생겼지?