카테고리 없음

DOM / 보일러 플레이트

나도 오늘부터 개발자?! 2022. 4. 10. 12:21

BOM
브라우저와 관련된 객체들의 집합을 브라우저 객체 모델(BOM:Browser object Model)이라고 부르며, Browser와 관련된 기능들을 구성합니다. DOM은 이BOM중에 하나입니다

 

BOM에는 web문서 영역을 제어 할수있는 객체가 있고 그 객체가 document 입니다

(document는 DOM tree의 최상위 객체이다.) 

BOM의 최상위 객체는 Window라는 객체입니다. DOM은 이 Window 객체의 하위 객체이기도 합니다

DOM은 Document Object Model의 약자이며, 의역하면 문서 객체를 인식하는 방식으로 번역할 수 있습니다.

(Script 언어로 HTML요소를 제어 할수 있도록 웹문서를 객체화 한것)

문서객체란 같은 태그들을 JavaScript가 이용할 수 있는 객체로 만들면 그것을 문서 객체라고 합니다. 

DOM은 조금더 넓은 의미로는 웹 브라우저가 HTML 페이지를 인식하는 방식을 의미하며, 조금 좁은 의미로 본다면 document 객체와 관련된 객체의 집합을 의미할 수도 있습니다

 

DOM의 이미지

 

DOM은 tree 형식의 자료구조를 가지고 있습니다.

tree 구조란 root node에서 아래로 퍼져나가는 형태 입니다. 
tree에서는 위쪽의 node를 부모(parent)노드 부모 아랫쪽 노드를 자식(children)노드라고 합니다. 
root node는 가장 위에서 시작하는 parent가 없는 node가 됩니다. (html) 

그리고 childeren이 없는 node를 leaf(나뭇잎,잎) node라고 합니다.
한마디로 tree구조는 뿌리(root)에서 시작해서 leaf(잎)에서 끝나는 것 입니다.

node란
tree 구조에서 root 노드를 포함한 모든 개개의 객체를 노드라고 표현합니다. head, title, script, h 등의 태그뿐 아니라 태그 안의 텍스트나 속성 등도 모두 노드에 속 합니다.

이중 HTML 태그를 요소노드라고 부르며, 요소 노드안에 있는 글자를 Text node 라고 부르기도 합니다.

문서객체의 생성 방법 및 자바스크립트에서 문서객체란?
문서객체가 생성되는 방식은 두가지로 웹 브라우저가 HTML 페이지에 적혀 있는 태그를 읽으면 생성하는 것과 HTML 페이지에 없던 문서객체를 JavaScript를 이용해서 생성하는 것 이 있으며, 첫 번째 방법은 정적으로 문서객체를 생성한다고 말하고 두 번째 방법은 동적으로 문서객체를 생성한다고 합니다.

여기서 두 번째로 문서객체를 생성하는 방식을 자바스크립트에서 문서객체를 생성하는 방법입니다.

 

정적문서 객체 생성 방법

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 문서객체 모델(DOM)</title >
</head>
<body>
   <h1 id ="header_1" name= "" >HEADER-1 </h1 > //정적 문서객체 모델 생성
   <div >
      <h1 id = "header_2">HEADER-2</h1 > //정적 문서객체 모델 생성
   </div >
   <hr >
   <h1 id = "clock"></h1> //정적 문서객체 모델 생성
</body>
</html>

 

동적 문서객체 모델 생성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 문서객체 모델(DOM)</title >
</head>
<body>
   <h1 id ="header_1" name= "" >HEADER-1 </h1 > //정적 문서객체 모델 생성
   <div >
      <h1 id = "header_2">HEADER-2</h1 > //정적 문서객체 모델 생성
   </div >
   <hr >
   <h1 id = "clock"></h1> //정적 문서객체 모델 생성
</body>

<script type= "text/javascript"> // 동적 문서객체 모델
    window.onload = function(){
       //1. 문서 객체 생성
       var header = document.createElement('h2'); //h2 태그를 생성해주는 것
       var textNode = document.createTextNode('Hello DOM');

       //2. 노드(요소/텍스트)를 연결.
       header.appendChild(textNode);

       //3. body 문서 객체에 header 문서 객체를 추가.
       document.body.appendChild(header);
    };
</script>

</html>

let header = document.createElement('h2');

우선 document 객체에 접근해서 <h2> 태그를 생성

let textNode = document.createTextNode('Hello DOM');

 document 객체에 접근해서 TextNode를 생성하고 'Hello DOM'이라는 스트링을 넣어주었습니다.

header.appendChild(textNode);

위에서 생성한 <h2> 태그에 자식노드를 추가하고 있습니다.

(추가되는 자식노드가 아까 위해서 생성한 Text Node 입니다.)

document.body.appendChild(header);

이제 document객체를 통해서 body 객체에 접근하고 있습니다.

DOM과 관련하여 보면 좋은 사이트: https://www.youtube.com/watch?v=aTGhKjoZeao

Electron BoilerplatePermalink

일렉트론은 웹 기술을 기반으로 하기 때문에 프론트 엔드에 자주 사용되는 AngularJS, React, Vue도 일렉트론과 같이 사용할 수 있다. 그리고 이미 훌륭하신 분들이 이를 잘 사용할 수 있게 만들어 놓은 보일러플레이트도 있기 때문에 직접하기 어렵다면 이러한 템플릿을 이용하자.
 

컴퓨터 코딩에서의 보일러 플레이트

 
코딩에서 보일러플레이트는 개발자에게 꼭 필요한 요소입니다. 예를 들면 학교 생활을 시작하기도 전부터 지쳐버리는 아침 조회 시간에 담임 선생님의 똑같은 잔소리 같은 것입니다. 만약 이를 보일러플레이트 코드로 바꾼다면 교실 벽면에 크게 프린터 해서 우리 반에서 조심해야 할 것들을 붙여놓으면 반복적이고 지루한 말을 듣지 않을 수 있을 것입니다.
 
과거에는 코드 세팅부터 연습하는 과정을 중요하게 생각했습니다. 혹은 모든 코드를 손으로 직접 타이핑하는 하드코딩이 유행했지만 이제는 반복적인 코드는 자동화로 맡겨 버리고 꼭 필요한 코딩을 하게 되었습니다. 개발자들에게 불필요하고 복잡하고 도움이 안 되는 반복적인 일들을 하지 않도록 도와주는 것이 보일러 플레이트입니다.
 
가장 대표적인 예가 react를 설정해주는 create-react-app입니다. 만약에 이 도구가 없었다면 웹팩을 시작으로 온갖 설정을 스스로 만들어야 합니다. 물론 그런 과정도 공부가 되지만 리액트를 하기도 전부터 지쳐버리게 될 것입니다. 동료는 벌써 리액트 사용법을 익히고 있는데 나는 아직도 설정만 한다면 어떤 게 좀 더 효율적인지 생각해봐야 할 문제입니다.
 
 

단순하게 요약하자면

  • 반복적으로 사용되는 부분을 재사용한다.
  • 최소한의 수정으로 다시 사용한다.
  • 개발자를 단순 작업을 해방해준다.