{{packageMeta.displayName}}의 로고

Svelte

ver 5.2.7 ∙ 2024.11.20 업데이트됨

개요

Svelte, 웹 애플리케이션을 구축하는 새로운 방법. 선언적인 컴포넌트를 가져와서 효율적인 JavaScript로 변환하여 DOM을 정교하게 업데이트하는 컴파일러. 따로 프레임워크를 로딩하지 않기에 기존 프론트엔드 기술보다 빠른 웹 어플리케이션을 만들 수 있음

관련 게시물

모두 보기

웹 컴포넌트 (Web Components)

컴포넌트 기반 UI 개발의 패러다임을 주도한 React가 등장한지도 어느 덧 10년이 넘었네요. 이제 Vue.js, Svelte, Angular 등 어떤 프론트엔드 프레임워크를 사용하든 현대 웹 개발에서 컴포넌트 기반으로 UI 개발하는 것은 거의 당연한 얘기가 되었죠. 그리고 마침내 웹 컴포넌트(Web Components)를 통해서 별다른 프론트엔드 프레임워크가 없어도 UI 컴포넌트를 만들 수 있는 길이 활짝 열렸습니다.


웹 컴포넌트는 웹사이트나 애플리케이션에서 UI를 모듈화하고 재사용할 수도록 해주는 웹 표준 기술입니다. React와 같은 프론트엔드 프레임워크에서 오랫동안 경험해왔던 UI 컴포넌트를 떠올리시면 이해가 쉬우실 것 같습니다.


React 컴포넌트는 React에서만 쓸 수 있고, Vue.js 컴포넌트는 Vue.js에서만 쓸 수 있는 근본적인 한계가 있습니다. 하지만 웹 컴포넌트는 이와 같은 구애를 받지 않고 어떤 프론트엔드 프레임워크와도 함께 쓸 수 있습니다. 왜냐하면 웹 컴포넌트는 브라우저에서 네이티브(native)하게 작동하기 때문입니다.


이러한 웹 컴포넌트의 띄어난 호환성과 이식성, 재사용성 및 생산성 덕분에 최근에는 디자인 시스템(Design System)을 구현하는 최고의 기술로 주목받고 있습니다.


모든 기술이 그러하든 웹 컴포넌트가 장점만 있는 것은 아닙니다. 대표적인 단점으로 API가 직관적이지 않다고 평가받고 있고, 배우기 쉬운 기존 프런트엔드 프레임워크 대비 진입 장벽이 높은 편입니다. 그래서 실제 프로젝트에서는 이러한 단점을 보완한기 위해서 웹 컴포넌트를 직접 작성하기 보다는 Lit나 Stencil과 같은 라이브러리를 많이 사용합니다.


웹 컴포넌트은 크게 다음 세 가지 핵심 기술로 이루어집니다.

  • Custom Elements: 사용자 정의 HTML 요소(element) 또는 태그(tag)를 정의할 수 있습니다.

  • Shadow DOM: DOM 트리의 일부를 캡슐화하여 스타일과 마크업이 외부와 충돌하지 않도록 해줍니다.

  • HTML Templates: 화면에 나타나지 않는 HTML 조각(fragment)을 정의해놓고 재사용할 수 있습니다.

이 웹 표준 기술들은 현재 주요 브라우저에서 모두 지원되고 있습니다.


이번 포스팅에서는 각각의 기반 기술을 하나씩 살펴보면 웹 컴포넌트의 기본 개념을 잡아보도록 하겠습니다.


📝 포스팅: https://www.daleseo.com/web-components/

자바스크립트 라이브러리의 급 나누기 🥇🥈🥉

State of JS 2023 설문 결과에는 매우 흥미로운 데이터가 있습니다. 바로 자바스크립트의 주요 라이브러리들을 리텐션(retention)에 따라 급(tier)을 나눈 건데요. 즉, 퍼센트가 높을수록 해당 라이브러리에 대한 경험이 좋아서 계속해서 쓰길 원하는 응답자가 많다는 뜻입니다 🤗

영광의 S티어는 Vite, Vitest, Playwrite, pnpm, MSW, esbuild, SWC, Testing Library, Astro가 차지했는데요. 아마 큰 이견이 없이 대부분의 자바스립트 개발자들에게 사랑받고 있는 라이브러리일 것입니다. 올해는 Svelte와 Storybook이 A티어로 밀려날 정도로… 요즘 라이브러리 간에 경쟁이 치열하고, 개발자들의 기대치가 참 높아졌구나라는 생각이 들었습니다.

B티어에는 비교적 연식이 쫌 된 굴직한 라이브러리가 주로 포진해 있습니다. 대표적으로 React와 Vue를 들 수 있죠. 그럼에도 불구하고 이 두 라이브러리를 사용한다는 응답자는 작년보다 오히려 증가하였습니다. 아무래도 많이 쓰이는 만큼 불만도 많고 이탈도 많은 게 아닐까요? 시장 점유율이 워낙 높아서 좋든 싫든 프론트엔드 개발자로 먹고 살려면 써야하는 라이브러리가 된 느낌입니다 😂

마지막으로 C티어에는 다양한 이유로 인기가 예전같지 않은 라이브러리들이 꽤 보이는데요. 최근에 빌드 도구의 세대 교체가 활발히 일어나면서 Webpack과 Parcel은 점점 설 자리를 잃어가고 있는 것 같습니다. Angular의 하락세는 수년간 지속되어 와서 이제는 그닥 놀랍지도 않네요.

개인적으로 제일 눈에 띄는 부분은 Gatsby의 몰락입니다. C티어 내에서도 최하위권이죠. Gatsby는 몇 년전만 해도 Next.js와 어깨를 나란히 하던 React 기반 정적 사이트 생성기(Static Site Generator)입니다. 잘 나가던 라이브러리도 순식간에 나락갈 수 있다는 것을 잘 보여주는 예라고 할 수 있겠네요 😓

자바스크립트 프로젝트 생성법 정리: npm init/create, npx

개발자 경험을 중요시하는 트렌드에 따라서 최근에 나오는 자바스크립트 프레임워크는 대부분 프로젝트를 편리하게 구성할 수 있도록 명령줄 도구(CLI)를 제공하고 있습니다.

그런데 각 프레임워크의 문서를 확인해보면 프로젝트를 생성하는 방법이 조금씩 다르다는 것을 알 수 있는데요.


예를 들어, React 기반 SPA(Single Page Application)을 생성할 때 많이 사용되는 Create React App의 문서를 보면, `npx` 명령어나 `npm init` 명령어를 사용하고 있습니다.

```sh

$ npx create-react-app my-app

```

```sh

$ npm init react-app my-app

```


다른 예로, React의 대표적인 메타 프레임워크인 Next.js 문서를 보면 `npx` 명령어를 사용하고 있습니다.

```sh

$ npx create-next-app@latest

```

Svelte나 Vue.js 쪽은 어떨까요? Svelte 문서와 Vue.js 문서를 보면 `npm create` 명령어를 사용하고 있습니다.

```sh

$ npm create svelte@latest myapp

```

```sh

$ npm create vue@latest

```

하나의 명령어로 통일하면 좋을텐데 왜 이렇게 헛갈리게 다른 명령어를 사용해서 프로젝트를 생성하라고 하는지 궁금하지 않으세요?

이번 포스팅에서는 자바스크립트 프로젝트 생성할 때 자주 보게되는 `npm init`, `npm create`, `npx`, 이 세 가지 명령어에 대해 샅샅이 파헤쳐 보겠습니다!


📝 포스팅: https://www.daleseo.com/js-npm-init/


자바스크립트를 공부하고 계시다면 아래 게시물도 함께 읽어보시기를 추천드립니다.


📕 자바스크립트 개발자를 위한 package.json 파일 정리: https://careerly.co.kr/comments/90359

📗 패키지 잠금 파일 (package-lock.json, yarn.lock): https://careerly.co.kr/comments/93535

📘 자바스크립트 개발자를 위한 필수 npm 커맨드 정리 (+npx): https://careerly.co.kr/comments/93003

📙 Bun: 귀엽지만 강력한 새로운 자바스크립트 런타임: https://careerly.co.kr/comments/92202

📓 자바스크립트 패키지 매니저: npm vs. Yarn: https://careerly.co.kr/comments/94203

자바스크립트 프로젝트 생성법 정리 (npm init, npm create, npx)

www.daleseo.com

자바스크립트 프로젝트 생성법 정리 (npm init, npm create, npx)

자바스크립트의 History API와 클라이언트 단 라우팅

URL이 바뀔 때 마다 새로운 페이지를 서버로 요청하지 않는 SPA(Single Page Application)에서는 보통 클라이언트 단에서 라우팅(routing)을 하는데요. 그래서 React, Svelte, Vue.js와 같은 대부분의 프론트엔드 프레임워크을 사용할 때는 이러한 클라이언트 단 라우팅을 지원하는 라이브러리와 함께 쓰는 경우가 많습니다.


그런데 이러한 라우팅 라이브러리는 대부분은 내부적으로 자바스크립트의 History API를 사용하고 있다는 것을 알고 계셨나요? 이번 글에서는 클라이언트 단 라우팅을 이해하는데 핵심적인 자바스크립트의 History API에 대해서 알아보고 간단한 실습도 진행해보겠습니다.


📝 포스팅: https://www.daleseo.com/js-history-api/

🧑‍💻 실습 코드: https://codepen.io/daleseo/pen/JjwPBwv


실제 애플리케이션을 개발하실 때는 이미 많은 프로젝트에서 검증이 된 유명한 라우팅 라이브러리를 사용하실테니 이렇게 직접 라우팅을 구현할 일은 없으실 것입니다. 하지만 라우팅 라이브러리가 내부적으로 어떻게 동작하시는지 이해하신다면 버그가 생겼을 때 디버깅이 용이해지고 나중에 다른 프론트엔드의 라우팅 라이브러리를 배울 때도 큰 도움이 될 것입니다.

자바스크립트의 History API와 클라이언트 단 라우팅

www.daleseo.com

자바스크립트의 History API와 클라이언트 단 라우팅

CFCs (feat. web component)

앞으로 프론트엔드에서 어떤 기술이 중요해질까?

React? Vue? Svelte? 아니면 Next 또는 Nuxt 같은 프레임워크?

위 기술들도 분명 중요한 기술들임에는 틀림없지만 나는 그보다 Web Component가 더 중요해질거같다는 생각이 든다.


https://developer.mozilla.org/en-US/docs/Web/API/Web_components


물론 회사 상황에따라 다르다.

서비스 코드가 일괄적으로 하나의 기술로만 구현되어있다면 해당 기술을 사용해 공통 컴포넌트를 만들어놓으면 될 것이다.

하지만 서비스 코드가 프로젝트마다 다른 기술로 개발되어있다면?

(이런 일이 흔하지 않을거라고 생각할 수 있지만, 내 주변에 의외로 이런 일이 많이 발생하고 있다. 솔직히 우리 회사처럼 다양한 기술들을 사용하진 않았더라도 React와 Vue를 같이 사용하는 회사들은 많다. 심지어 많이 사용하지 않는 기술.. Svelte가 될 수도 있고.. 우리회사는 WoowahanJS가 있고.. 과거에 많이 사용했던 JSP도 있고.. 이런 기술들을 사용한 곳도 많이 있을 것이다.)

그러면 각 기술별 공통 컴포넌트를 만드는건 엄청나게 귀찮고 어려운 작업이 될 것이다.

똑같은 기능을하는 컴포넌트를 각 기술마다 따로 만들어야되기 때문이다.


이러한 문제를 해결해주는 것이 Web Component이다.

위 기술은 표준화된 기술로 대부분의 브라우저에서 지원하고 있다.

그리고 공식적으로 재사용 가능한 컴포넌트를 만들기위한 기술이라고 명시되어있다.

그렇기 때문에 위 기술로 공통 컴포넌트, 디자인 시스템을 만들어놓으면 해당 서비스에서 어떤 기술을 사용하던 기술에 구애받지않고 개발을 할 수 있다.


또한 기능을 캡슐화하고 slot 이란 장치를 이용해서 기존 코드를 건드리지않고 특정 기능을 부여할 수 있기까지하다.

마치 데코레이터처럼.


지금 회사에서 실제로 JSP, WoowahanJS, React, Vue3로 되어있는 서비스를 위 Web Component 기술을 사용하여 개발하고 있는데 만족도가 굉장히 높다. (이런 프로젝트가 있을 수 있어?라고 생각할 수도 있지만 실제로 있을 수 있다.)

Web Component 기술로 공통 컴포넌트(또는 디자인시스템)를 Headless UI 방식으로 개발해놓으면 그 컴포넌트를 모든 기술에서 가져다 사용할 수 있다.

즉, 프레임워크 자유도가 확 올라가는 것이다.


사실 개발자라면 다들 새로운 기술, 보다 더 좋은 기술에 대한 욕심이 조금이라도 있을 것이다.

하지만 현실의 벽에 부딪혀 실행에 못 옮기는 분들이 많을 것이다.

개발 일정도 준수해야되고.. 괜히 신기술을 사용했다가 다른 프론트엔드 개발자의 러닝커브만 높이게되고..

하지만 이 벽을 깨고싶다면, 이 벽을 깨서 기술 선택의 자유도를 높이고 싶다면, Web Component를 사용해보는 것도 좋은 방법이 될 것이다.

물론 이걸하려면 Web Component와 Litjs를 따로 좀 학습해야되지만.. (litjs는 Web Component를 보다 더 쉽게 개발하게 해주는 프레임워크이다. 사실 이런 프레임워크들은 따로 많이 있지만(Stenciljs 등) Litjs를 제일 많이 사용하는거같아 선택했다.)

그리고 무엇보다도 Headless UI 원칙을 준수해 개발해야돼서 머리가 꽤 아프지만.. 좋은 선택지임에는 틀림없다고 생각한다.


Web Components - Web APIs | MDN

MDN Web Docs

Web Components - Web APIs | MDN

jQuery 4.0 소식

jQuery는 더 이상 새로운 버전이 안 나올 줄 알았는데 4.0 베타 버전이 출시되었네요. 곧 출시된 버전 4.0에서는 IE 10까지 지원이 종료되고, 추후 출시될 버전 5.0에서는 IE 11까지 지원의 종료하면서 jQuery 마저도 IE 지원을 완전히 종료한다고 선언하였습니다. jQuery를 썼던 큰 이유는 IE와 타 브라우저 호환성 문제였는데 jQuery의 이러한 변화는 시사하는 바가 큰 것 같습니다.


📝 관련 포스트: https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta


2006년에 출시되었던 jQuery는 한 때는 자바스크립트 개발이 곧 jQuery 개발이라고 여겨질 정도로 정도로 상당히 오랫동안 자바스크립트 생태계를 주름잡던 라이브러리입니다. 하지만 최근에는 React, Angular, Vue.js, Svelte와 같은 모던 자바스크립트 라이브러리에 밀려 주로 레거시(legacy) 코드에서나 미처 못해 쓰는 라이브러리로 전략하고 말았는데요.


jQuery 새로운 버전을 출시하더라도 얼마나 많은 프로젝트에서 업그레이드를 할 지는 의문입니다. 이미 컴포넌트 기반의 웹 프로그래밍이 대세가 된 상황에서 jQuery가 이번 업그레이드를 통해 과연 과거의 영광을 얼마나 되찾을 수 있을지 궁금해지네요.

jQuery 4.0.0 BETA!

Jquery

jQuery 4.0.0 BETA!

관련 개발자 Q&A

모두 보기

프론트엔드 프레임워크 질문 있습니다! (React, Vue, Svelte)

안녕하세요 현재 백엔드 개발자를 목표로 공부하고 있는 비전공자 취준생입니다. 토이 프로젝트를 진행하면서 실력을 성장시키고 싶은데, 혼자 진행해야 하다보니 html, css, js보다 프론트엔드 프레임워크를 배워보고 싶은 생각이 들었습니다. 질문 1. 프론트엔드를 희망하지 않아도 리액트를 배우는 것이 좋을까요?? (개인프로젝트 진행용) 질문2. svelte(svelteKit)이라는 프레임워크가 끌리는데 리액트나, 뷰를 놔두고 선택해도 될까요..?? 아직 공부를 한지 얼마 되지 않아서 문장이 매끄럽지 못한점 죄송합니다.

1. 저는 한번 배워보시고 잘 맞으시면 깊게 배워보시는설 추천드립니다 본인을 어필할 수 있는 무기가 하나 더 생긴다고 생각하시면 좋을것 같아요 2. Svelte 도 좋죠 요즘 각광받는 프레임워크라 알고 있습니다 리액트 vue svelte 다 배워보시고 본인한테 맞는 프레임워크를 사용하면 될듯 합니다 저도 처음엔 vue를 배웠었다가 리액트로 건너왔는데 저와 잘 맞아서 잘 사용중입니다

프론트엔드 이직은 어떻게 준비하나요?

안녕하세요! 6개월차 프론트엔드 신입입니다. 사실 이직을 바로 생각하는건 아니고 지금있는 회사에서 1년은 넘기고 이직이나 중고신입으로 대기업에 가고싶습니다 하지만 여러가지 준비는 해야하는걸로 생각이 들고, 어떻게 하면 좋을지 여기서 앞서나간 선배님들의 조언을 듣고자합니다. 현제 제 상태는 이렇습니다. 컴퓨터공학 22년 차석졸업 계약직 인공지능강사 6개월 현직 프론트엔드 개발자 해커톤 수상 4회 (1등 2회, 2등 1회, 3등 1회) 교육부 장관상 1회 소프트웨어 특허 1개 소프트웨어 저작권 9개 경험) 소프트웨어 동아리 회장, 교내 연구생 알고리즘) 프로그래머스 레벨3 외국어) 영어 프리토킹 스택) sveltekit(현직),nextjs,tanstack-query,redux-rtk,playwright,tailwind,css,styled-compnent,sotrybook,mocking service worker 취업을 할때는 대회에서 상을 받았던 이력으로 회사에서 좋개 봐줘서 빠르게 입사했지만, 대기업에 중고신입이나 이직은 많이 다를거 같아 고민입니다. 따로 토이프로젝트나, 오픈소스 기여를 하면 좋다는걸 알지만 개인적으로 회사에서 프로젝트가 재미있어 기존 회사 코드 성능 향상에 몰두하고있습니다. 회사코드를 보고 다듬고 동료들과 커뮤니케이션하는게 좋아, 자진해서 거의 15시간정도 회사 일만하고 있지만 정작 나중에 되서 다른회사 지원하면 안좋게 보이까 걱정도 조금됩니다 그래서 이곳에서 도움을 구하고자합니다 긴글 읽어주셔서 감사합니다

제가 올려주신 내용을 보고서 든 생각은, 만약 글쓴분께서 제가 몸담은 곳에 지원해 주신다면 꼭 채용하고 싶다 입니다. 물론 현재 같이 하시는 분들께는 좀 미안한 마음이 들 수는 있겠지만, 그 분들도 글쓴이 분이 얼마나 업무에 진심이었고 자기 발전에 열심이었는지 아신다면 응원해 주실 겁니다. 전 개인적으로 잘하고 계신다고 생각합니다. 화이팅 입니다.

신입개발자 프레임워크 커리어 질문

안녕하세요. 프론트엔드 신입으로 업무를 하게된지 별로 안된 신입입니다. 회사와 제가 공부한 프레임워크에 차이로 인해 많은 셍각이 들어 이렇게 글을 적게 되었습니다 ㅎㅎ 제가 공부한 프레임워크는 React,Nextjs 였습니다. 하지만 회사에서 사용하는 프레임워크는 Svelte,SvelteKit 입니다 고민이 되는것이 회사에서 쌓은 프로젝트나 커리어가 나중에 이직을 할때 회사에서 사용하지 않은 프레임워크라서 의미가 없게 될지 걱정입니다 아무래도 svelte가 성능이 좋다고 해도 React,vue 민큼 많이 사용되는것이 아니고 채용시장에서 메리트가 있어보이지 않다고 생각합니다 ㅠㅠ 하지만 프레임워크는 결국 도구인데 크게 차이가 있을지 잘 모르겠습니다. 운전자가 벤츠를 타고 목적지로 가던지, 아우디를 타고 목적지로 가던지, 자동차의 차이가 크지 않은것처럼, 프레임워크의 차이가 클지 알려주시면 감사합니다 ㅠㅠ

마지막에 정확하게 말씀 해 주셨네요. 뭘 타고 가는지는 중요하지 않습니다. 결국 목적지에 도달하기만 하면 되는거지요. 프레임워크는 결국 유행이 지나고 결국 사라질거에요. 한가지를 기똥차게 사용하는 능력보다는 새로운걸 배워내는 능력이 훨씬 더 중요합니다.

다들 Svelte 사용하시나요?

Svelte 가 대두된지 벌써 몇년이 지났는데, 과연 국내에서는 얼마나 관심이 있는지 궁금합니다. 퍼포먼스가 엄청나게 빨라서 개인적으로 흥미가 많이 생기고 있습니다. 조만간 사이드 프로젝트를 Svelte로 해볼까 생각합니다. 혹시 Svelte로 작업해 보셨던 경험이 있으시다면 다양한 리뷰 부탁드립니다. ☺️

Svelte 는 아직 많은 프로젝트에서 사용하고 있지는 않지만 매년 서베이에서 배우고 싶은 프레임워크와 사용해볼 예정인 프레임워크에서 최상단에 위치할 만큼 개발자들의 관심과 많은 인지도를 쌓아가고 있습니다. 저는 아직 스벨트를 깊게 다뤄보지는 않았지만 다른 개발자분들의 말씀을 들어보면 스벨트를 컴파일러라고 표현하시던데 퍼포먼스가 아주 훌륭하다고 하십니다. 작년 카카오 if 에서는 스벨트 관련 세션도 있었을 만큼 인지도를 쌓아가고 있다고 생각해요. 사이드 프로젝트를 통해서 svelte를 경험해 보시는 것도 상당히 좋은 경험일 것 같습니다😁 카카오세션> https://if.kakao.com/2022/session/81

공식 홈페이지

svelte.dev

최신 버전 정보

5.2.7

최신 버전 출시일

2024.11.20

연관 라이브러리

라이브러리 로고React라이브러리 로고Vue라이브러리 로고Angular라이브러리 로고Solid.js

의견 보내기