
섀도우 DOM은 2011년 크롬(chrome)의 실험 단계를 거쳐 2012년 표준화 절차에 들어가 2020년부터 주요 웹브라우저에서 지원하기 시작했다. 평소 웹 기술 업데이트에 관심이 많은 개발자들은 익히 알고 있을 것이다. 반대로 그렇지 못한 개발자들이 있을 수 있다는 뜻이기도 하다. 어떤 경우이든 섀도우 DOM이 등장하게 된 배경을 이야기하는 것은 모두에게 중요할 것 같다. 다음의 등장 배경에 공감이 된다면 섀도우 DOM을 적극적으로 알아보고 활용해야 되지 않을까?
첫 번째, DOM 구조의 캡슐화와 격리이다. 웹 문서에서 생성되는 DOM은 매우 복잡하다. 그에 따른 CSS와 자바스크립트 코드가 뒤엉켜 있을 수 있다. 그렇기 때문에 의도치 않은 코드 충돌 등의 문제가 발생할 수 있는 확률이 높아졌다. 캡슐화(은닉)된 독립적인 컴포넌트 단위의 인터페이스를 설계한다면 그러한 문제를 예방할 수 있을 것이다.
두 번째, 재사용이 가능한 컴포넌트(component)이다. 웹은 비슷한 기능과 동작을 하는 UI를 개발하는 일이 잦다. 지루한 작업이 될 수도 있고 무엇보다 생산성을 떨어뜨리는 원인이 되기도 한다. 영리한 개발자들은 미리 마스터 코드를 준비해 놓고 복사해 커스터마이징 하는 방식으로 작업을 하기도 한다. 하지만 임기응변식의 코드 변경은 유지보수에서 발목을 잡는 경우도 있다. 생산성 만큼 유지보수에 대한 고민도 매우 중요하다. 섀도우 DOM은 두 마리의 토끼를 잡을 수 있다.
이제 공감이 된다면 섀도우 DOM 개론부터 살펴보자.


