웹 컴포넌트 (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/

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 10월 28일 오후 8:32

 • 

저장 70조회 4,175

댓글 0

    함께 읽은 게시물

    IT 회사의 업무에서, 지금까지는 디자이너와 특히 개발자가 병목이었는데, 대 AI 시대에는 기획자가 병목이 될 수도 있겠다. 조금이라도 규모가 있는 기업에서의 가장 큰 병목은 보통 의사결정자라는 것을 생각해보면 그렇다.


    즉, 실무보다 의사결정을 AI에게 맡기는 것이 병목을 해소할 수 있는 가장 확실한 방법이며, 그러므로 부장님과 사장님을 AI로 대체하는 것이야말로 인류의 번영을 위한 가장 빠른 지름길이다. (아님. 아니 맞나?!)


    🌎 해외에서 일하면 뭐가 좋을까요❓

    외국어를 사용해서? 돈을 더 많이 벌어서? 새로운 기회가 많아서? 글로벌 경력을 쌓을 수 있어서?

    ... 더 보기

    《그렇게 해주세요》

    ... 더 보기

    AI(LLM) 애플리케이션의 발전 속도가 AI 지능(능력)의 발전 속도를 따라가지 못하고 있는 상태가 되었다. 즉, 이제 AI가 부족한 것이 문제가 아니라, AI의 능력을 100% 활용하지 못하고 있는 것이 문제인 상태가 되었다는 이야기.

    조회 1,162


    👋 LLM 활용에 도움이 되는 가이드 모음

    ✅️Prompting Guide 101 by Google : https://lnkd.in/d8UwPWeN

    ... 더 보기

     • 

    저장 12 • 조회 940


    iOS 19가 아니라 이제 iOS 26?

    ... 더 보기

    No iOS 19: Apple Going Straight to iOS 26

    MacRumors

    No iOS 19: Apple Going Straight to iOS 26