일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- TypeScript
- EC2
- wetube
- dict
- SAA
- node
- git
- pandas
- Vue
- NeXT
- 카톡
- socket io
- async
- crud
- docker
- react
- 튜플
- 채팅
- SSA
- 파이썬
- AWS
- lambda
- 중급파이썬
- merge
- MongoDB
- flask
- Props
- RDS
- Class
- S3
- Today
- Total
초보 개발자
DOM? BOM? ( feat. CSSOM ) 본문
JavaScript를 접하면서 DOM이란 용어를 많이 접해보았을 것이다. 단순히 브라우저의 HTML요소에 접근할 수 있는 것이라고만 알고 있었는데 오늘 한번 정의를 해보려고 한다.
DOM이란 ? 🚕
JS는 웹문서를 제어하기 위해 개발된 언어이다.
document.querySeletor('h1').textContent = '제목'
위와 같이 컨텐츠 내용을 변경한다던지 HTML요소를 추가하거나 제거하는 등
JS는 HTML문서를 조작하기 위해 만들어진 언어이다.
HTML파일을 JS로 어떻게 제어를 할 수 있을까??
각 브라우저 ( 크롬, 엣지 등 )들은 웹문서를 해석할 수 있는 렌더링 엔진이 존재한다.
브라우저로 HTML파일을 열게되면 이 렌더링 엔진이 HTML로 작성된 문서를 위에서 부터 차례대로 하나씩 읽어들이면서
다 읽으면 그 HTML문서를 객체화 시켜 JS로 접근할 수 있도록 해준다.
> 문서를 객체화 했다 하여 DOM이라 불린다. (Document Object Model)
다시말하여 DOM은 Document Object Model의 약자로 JS로 HTML요소를 제어할 수 있도록 웹문서를 객체화 한 것을 말한다. 이 DOM은 tree 구조를 가지고 있다. ul 안에 li 태그가 들어있는 것처럼 하나의 부모안에 N개의 자식이 들어있는 구조이다.
이 것을 DOM Tree라고 하며 각각의 요소를 노드라고 한다. JS를 통해 각각의 노드에 접근하여 제어할 수 있게 되는 것이다.
BOM 🚄
웹문서를 객체화 한 것을 DOM이라고 한다면 브라우저 자체를 객체화 한 것은 BOM이라고 한다. ( Browser Object Model )
객체화한 이유는 브라우저를 스크립트로 제어하기 위함이다.
마우스를 사용하여 브라우저의 새 탭을 킬 수 있다. 또 주소창에 다른 주소를 입력함으로써 다른 페이지로 이동할 수 있다.
이렇게 마우스로 브라우저의 기능을 이용하는 것 처럼, 이 브라우저를 객체화 함으로써 자바스크립트로도 제어가 가능한 것이다.
- window : 모든 객체가 소속된 객체이며 브라우저 창 자체를 의미한다.
- document : 현재문서에 대한 정보를 갖고있는 객체이다.
- history : 현재 브라우저가 접근했던 URL history를 제어할 수 있다.
- location : 문서의 주소와 관련된 객체로 window객체의 프로퍼티인 동시에 document의 프로퍼티이다. 이 객체를 이용하여 윈도우의 문서 URL을 변경할 수 있고, 문서의 위치와 관련하여 다양한 정보를 얻을 수 있다.
- screen : 사용자의 디스플레이 화면에 대한 다양한 정보를 갖고있는 객체이다.
- navigator : 실행중인 애플리케이션(브라우저)에 대한 정보를 알 수 있다. 크로스 브라우징 이슈를 해결할 수 있다.
- navigator.geolocation.getCurrentPosition() 현재 애플리케이션에 대한 위치정보
- navigator.appName 앱 이름을 반환한다.
- navigator.appVersion 앱에 대한 버전정보를 반환한다.
- navigator.userAgent 서버에 요청할 때 앱(브라우저)에 대한 정보이다.
브라우저 객체의 종류에는 위와 같은 객체들이 존재한다.
window 객체를 사용하여 window.open('url address'), window.close() 브라우저 자체를 생성 제거할 수 있고, 우리가 자주 사용해왔던 alert('내용') 도 사실은 window.alert의 줄임이었다. 앞의 window는 생략이 가능했기에 alert만으로도 사용이 가능했던 것이다.
history.back() 하면 브라우저에서 전에 있던 url로 이동한다.
history.forward() 하면 앞으로 이동한다.
location은 window.location으로 사용할 수도 있고, document.location으로도 사용할 수 있다.
location.host 라고 하면 현재 브라우저의 host를 가져올 수 있다 ( 'www.naver.com' )
location.href = 'google.com'을 적으면 현재 브라우저가 구글로 변경이 된다.
이렇듯 location객체는 웹 문서 URL의 정보를 가지고 있다.
screen은 어디서 보냐에 따라 ( 휴대폰, 노트북 ) 객체의 값이 바뀐다.
console.dir(screen)을 하면 현재 디스플레이 사이즈 등 다양한 정보를 가져올 수 있다.
CSSOM 🚀
마찬가지로 CSS를 JS로 조작할 수 있도록 한 것을 CSSOM 이라고 한다. ( CSS Object Model )
DOM 조작 🚋
BOM에는 웹문서 영역을 제어할 수 있도록 제공하는 객체가 있다.
바로 document이다.
웹 페이지 자체를 의미하여 DOM Tree의 최상위 노드이다. 이 객체로 원하는 HTML요소에 접근할 수 있다.
다시 말하여 DOM요소에 접근하기 위한 진입점이라고 생각하면 된다.
document.querySeletor('h1').textContent = '제목'
위에서 사용한 문장이다. document객체로 DOM객체에 접근 한 뒤 DOM객체에서 지원하는 프로퍼티로 제어를 할 수 있는 것이다.
'이것 저것' 카테고리의 다른 글
this란 무엇인가? (0) | 2022.06.21 |
---|---|
JS파일 가져오기 defer, async (0) | 2022.06.12 |
AWS EC2 Ubuntu 18.04 NODE 설치 하기 16.x버전 (0) | 2022.05.23 |
pm2로 node 배포! (0) | 2022.05.15 |
wsl2 리눅스 위치 폴더 열기 명령어 explorer.exe . (0) | 2022.05.12 |