inblog logo
|
code-sudal
    html

    돔과 바인딩에 대해

    윤주헌's avatar
    윤주헌
    Sep 02, 2024
    돔과 바인딩에 대해
    Contents
    돔이란(Document Object Model)돔의 기본 개념DOM의 위치와 동작DOM과 브라우저의 관계DOM의 중요성추가 사항바인딩이란js에서의 바인딩 2가지

    돔이란(Document Object Model)

    💡
    HTML, XML 문서의 프로그래밍 interface 이다.
    추가 설명
    Javascript가 getElementbyid()를 같은 함수를 이용하여 HTML문서의 각 요소(li, head같은 태그들)들을 접근하고 사용할 수 있도록 하는 객체 모델이다.

    돔의 기본 개념

    • 문서의 객체 모델
    💡
    DOM은 웹 문서의 각 요소를 객체로 표현하고, 이 객체들을 트리 구조로 구성합니다. 이 트리 구조에서 각 노드는 문서의 요소(예: <div>, <p>, <a> 등), 텍스트, 속성 등을 나타냅니다.
    • 트리구조
    💡
    HTML 문서가 DOM으로 변환되면, 문서의 구조가 트리 형태로 표현됩니다. 예를 들어, <html> 태그가 루트 노드가 되고, 그 하위에 <head>와 <body> 태그가 위치하며, 이들 하위에 각 요소들이 위치하게 됩니다.
    • js를 통한 조작
    💡
    DOM을 통해 자바스크립트는 웹 페이지의 요소를 동적으로 생성, 수정, 삭제할 수 있습니다. 예를 들어, 버튼 클릭 시 페이지의 내용을 변경하거나, 사용자 입력에 반응하여 동적으로 컨텐츠를 업데이트할 수 있습니다.
    • 속성 및 메서드
    💡
    DOM 객체는 요소의 속성과 메서드를 제공합니다. 예를 들어, HTML 요소의 속성을 읽거나 수정할 수 있으며, 요소에 대한 다양한 메서드를 호출할 수 있습니다
     

    DOM의 위치와 동작

    1. 브라우저의 메모리:
        • DOM은 웹 페이지를 렌더링하기 위해 브라우저의 메모리 내에 생성됩니다. 이 DOM 트리는 페이지의 구조를 반영하고 있으며, 각 노드(요소, 텍스트, 속성 등)는 메모리에서 객체로 표현됩니다.
    1. 문서 로딩과 DOM 생성:
        • 웹 페이지가 로드될 때, 브라우저는 HTML 문서를 파싱하고 DOM을 생성합니다. HTML 문서의 각 요소는 DOM 트리의 노드로 변환됩니다.
        • 브라우저는 HTML을 파싱하여 DOM 트리를 생성한 후, 이 트리를 사용하여 페이지를 렌더링합니다. 이 과정에서 CSS가 적용되어 최종적으로 화면에 표시됩니다.

    DOM과 브라우저의 관계

    1. 브라우저와 DOM 생성:
        • 자동 생성: 웹 브라우저는 HTML 문서를 파싱할 때 자동으로 DOM을 생성합니다. 웹 페이지의 HTML, CSS, 자바스크립트가 로드되면 브라우저는 이 문서를 기반으로 DOM 트리를 생성하고, 이를 사용하여 페이지를 렌더링합니다.
        • 브라우저 내장: DOM은 브라우저의 핵심 기능 중 하나로, 별도로 설치하거나 추가적인 소프트웨어를 다운로드할 필요 없이 브라우저가 기본적으로 지원합니다.
    1. 웹 페이지 로딩 과정:
        • HTML 파싱: 브라우저가 HTML 파일을 파싱하여 문서의 구조를 분석합니다.
        • DOM 생성: HTML 요소, 텍스트, 속성 등을 기반으로 DOM 트리가 생성됩니다.
        • 렌더링: 브라우저는 DOM을 사용하여 페이지를 화면에 렌더링하고, CSS 스타일을 적용합니다.
    1. 자바스크립트와 DOM:
        • 제어와 조작: 자바스크립트를 사용하여 DOM을 동적으로 제어할 수 있습니다. 이를 통해 페이지의 콘텐츠를 변경하거나 사용자와 상호작용할 수 있습니다.
        • 브라우저의 JavaScript 엔진: 자바스크립트 코드가 실행되는 환경은 브라우저 내장 JavaScript 엔진(예: V8, SpiderMonkey 등)이며, 이 엔진이 DOM과 상호작용합니다.
    1. 브라우저 개발자 도구:
        • DOM 확인: 대부분의 브라우저에는 개발자 도구가 내장되어 있어, 웹 페이지의 DOM 구조를 시각적으로 확인하고 조작할 수 있습니다. 개발자 도구를 열면 현재 페이지의 DOM을 트리 구조로 보고 수정할 수 있습니다.
    1. 브라우저와 DOM의 관계:
        • 브라우저의 역할: 브라우저는 DOM을 생성하고 관리하며, 웹 페이지가 로드되거나 사용자의 상호작용에 따라 DOM을 업데이트합니다. 브라우저의 버전이나 종류에 따라 DOM의 동작 방식은 다를 수 있지만, DOM 자체는 브라우저의 기본 기능으로 제공됩니다.
        • 웹 개발자 도구: 브라우저의 개발자 도구를 사용하여 DOM을 실시간으로 확인하고 수정할 수 있습니다. 이는 개발 및 디버깅에 매우 유용합니다.

    DOM의 중요성

    • 페이지 동적 업데이트: 사용자가 상호작용할 때 웹 페이지를 동적으로 업데이트하는 데 필수적입니다.
    • 인터랙티브 웹 애플리케이션: 사용자 입력을 처리하고, 다양한 이벤트에 응답하며, 동적인 콘텐츠를 생성하는 데 필수적입니다.
    • 웹 애플리케이션의 핵심: 현대 웹 애플리케이션의 대부분은 DOM을 통해 페이지를 동적으로 조작하며, 사용자에게 더 나은 경험을 제공합니다.

    추가 사항

    • 노드 (Node): DOM에서 HTML 문서의 구성 요소를 나타내는 객체. 요소 노드, 텍스트 노드, 속성 노드, 주석 노드 등이 있습니다.
    • innerHTML: 요소의 HTML 콘텐츠를 읽거나 설정하는 프로퍼티. 요소 내부의 HTML을 동적으로 변경할 수 있습니다.
      • 읽기: 요소의 현재 HTML 콘텐츠를 문자열로 반환합니다.
      • javascript코드 복사 var content = document.getElementById('example').innerHTML; console.log(content); // 요소의 HTML 콘텐츠
      • 쓰기: 요소의 HTML 콘텐츠를 새 문자열로 설정합니다. 기존의 자식 노드들은 삭제되고, 새로운 HTML 내용으로 교체됩니다.
      • javascript코드 복사 document.getElementById('example').innerHTML = '<p>새로운 내용</p>';
        이 경우, <div id=”example”>의 내용이 <p> 새로운 내용</p>로 변경됩니다.
    • outerHTML: 요소와 그 내용을 포함한 HTML 문자열을 읽거나 설정하는 프로퍼티. 요소 자체를 포함하여 전체 HTML을 수정할 수 있습니다.
      • 읽기: 요소와 그 내용을 포함한 HTML 문자열을 반환합니다.
      • javascript코드 복사 var html = document.getElementById('example').outerHTML; console.log(html); // 요소 자신과 내용을 포함한 HTML
      • 쓰기: 요소 자신과 그 내용을 새 HTML로 교체합니다. 이 과정에서 요소가 새 HTML로 대체되며, 기존 요소는 문서에서 제거됩니다.
      • javascript코드 복사 document.getElementById('example').outerHTML = '<div id="example"><p>새로운 내용</p></div>';
        이 경우, 원래의 <div id=”example”>가 새로운 HTML로 교체됩니다.

    바인딩이란

    💡
    데이터를 특정 UI 요소나 이벤트에 연결하는 것을 의미합니다

    js에서의 바인딩 2가지

    1. 데이터 바인딩
    💡
    UI 요소와 데이터 모델 간의 연결을 의미합니다. 데이터가 변경되면 자동으로 UI가 업데이트되도록 설정할 수 있습니다. 많은 프레임워크(예: Angular, Vue, React)에서는 데이터 바인딩을 지원하여 동적 웹 페이지를 쉽게 만들 수 있습니다.
    1. 이벤트 바인딩
    💡
    사용자 이벤트(예: 클릭, 입력 등)를 특정 함수나 메서드에 연결하는 것을 의미합니다. 자바스크립트에서는 이벤트 리스너를 통해 이를 수행합니다.
    Share article

    code-sudal

    RSS·Powered by Inblog