FE-StudyWithMe / FE-without-framework

프레임워크 없는 프론트엔드 개발을 위한 레포지토리🔥
28 stars 0 forks source link

[4장] 섀도우 DOM에 대해 더 생각해보기 #24

Closed Joie-Kim closed 2 weeks ago

Joie-Kim commented 3 weeks ago

🧐 Question

1. SEO 측면에서 섀도우 DOM의 장단점

📝 Reference

horang-e commented 3 weeks ago

오 덕분에 뒤에 언급이 없어서 공부하지 않았던 섀도우DOM 에 대해 한번더 찾아보고 공부하는 계기가 되었습니다!!! bbbb

SEO 측면에서 섀도우 DOM의 장단점

구글의 검색 엔진에서는 섀도우 DOM을 평면화 해서 읽어 온다고 합니다!

<script>
  class MyComponent extends HTMLElement {
    constructor() {
      super();
      this.attachShadow({ mode: 'open' });
    }

    connectedCallback() {
      let p = document.createElement('p');
      p.innerHTML = 'Hello World, this is shadow DOM content. Here comes the light DOM: <slot></slot>';
      this.shadowRoot.appendChild(p);
    }
  }

  window.customElements.define('my-component', MyComponent);
</script>

<my-component>
  <p>This is light DOM content. It's projected into the shadow DOM.</p>
  <p>WRS renders this content as well as the shadow DOM content.</p>
</my-component>

위처럼 만들면 랜더링 후 구글은

<my-component>
  Hello World, this is shadow DOM content. Here comes the light DOM:
  <p>This is light DOM content. It's projected into the shadow DOM<p>
  <p>WRS renders this content as well as the shadow DOM content.</p>
</my-component>

이렇게 읽어 온다고 합니다! 그렇기 때문에 mode : 'open'을 사용해서 만든다고 한다면 SEO저하는 없을 것이라고 생각됩니다! 'closed'모드에 대해서는 web.dev에서

스크린샷 2024-10-19 오후 11 51 36

라고 나왔고 Note: Closed shadow roots are not very useful. Some developers will see closed mode as an artificial security feature. But let's be clear, it's not a security feature. Closed mode simply prevents outside JS from drilling into an element's internal DOM. 라고도 언급 된걸 보니 open 과 매한가지로 읽어오지 않을까..요?

섀도우 돔에 대한 블로그 SEO와 섀도우 돔에 대한 테스팅 구글의 서치콘솔이 Shadow DOM을 처리하는 방법 closed 모드는 왠만하면 쓰지말아라!

Joie-Kim commented 3 weeks ago

@horang-e 갓서현 ....... 관련해서 리서치 하러 들어왔다가 감동하고 갑니다 ...... 🥹

Joie-Kim commented 3 weeks ago
chhw130 commented 3 weeks ago

오오 shadow dom을 책에서는 자세히 다루지 않아, 그냥 가볍게 읽고 넘겼는데 찾아보니 흥미로운게 많네요.

저는 shadow dom을 사용하면 왜 성능적으로 좋을까?? 라는 물음 위주로 서칭 해보았는데요.

-> 결과적으로 독립적인 DOM으로 동작하다 보니 reflow, 리렌더링, dom 파싱 등 연산이 많이 드는 작업들도 shadow dom 스코프 안에서만 동작해서 더 효율적이라는 것 같아요.

추가로 video태그도 shadow DOM을 기반으로 동작한다고 하네요.

Joie-Kim commented 3 weeks ago

Q. 프레임워크 환경에서 섀도우 DOM을 잘 사용하기 위해 어떤 설정을 해줘야 해?

섀도우 DOM과 프레임워크(React, Vue 등)를 함께 사용할 때 추가적인 코드나 설정이 필요한 예시를 몇 가지 설명할게.

이런 방식으로 섀도우 DOM과 프레임워크 간 충돌을 완화할 수 있어.

Ref

horang-e commented 3 weeks ago
스크린샷 2024-10-20 오후 10 02 47