DOM(Document Object Model)은 웹 페이지에 대한 인터페이스를 말한다.
페이지 콘텐츠 및 구조, 그리고 스타일을 읽고 조작할 수 있도록 API를 제공한다.
HTML의 단위 하나하나를 객체로 생각하는 트리구조이다.
HTML은 설계도 자체이지만 DOM은 설계도를 바탕으로 실제로 화면에 보여지는 인터페이스이다.
내가 확인하고 싶은 브라우저 창에서 command+option+I를 눌러 개발환경으로 들어간다. console창에서는 javascript언어로 데이터를 브라우저로 전달할 수 있다.
DOM tree를 확인하기 위해서 console창에 document라고 치면 현재의 DOM 전체를 보여준다.

자식노드인 body에 접근하고 싶다면 document.body로 접근할 수 있다.
> document.자식노드

document.body.childNodes로 접근하게 되면 브라우저 창에서는 눈에 보이지 않는 것들이 같이 딸려 나온다.
여기에서 Node에는 3가지가 포함된다.
자식노드인 body의 자식태그를 가져오고 싶다면 document.body.children으로 접근할 수 있다.

그 안에서 "div"태그만 가지고 오고 싶다면 document.getElementByTagName("div")으로 접근할 수 있다.

getElementByTagName 외에도 getElementByID, getElementByName, ByClassName등 여러 방법으로 요소들에 접근할 수 있다.

document.createElement("dom요소")로 dom요소를 생성한 후
document.body.appendChild(dom요소) document의 어디에 추가할지와 추가할 dom 요소를 작성해준다.
const new_div = document.createElement("div")
new_div.style.backgroundColor = "red"
new_div.style.width = "100px"
new_div.style.height = "100px"
//body에 붙여주지 않으면 화면에서 보이지 않음
document.body.appendChild(new_div)
function sayHello(event){
alert("Hello")
}
const btn = document.getElementsByTagName("button")
for(let i = 0 ; i < btn.length; i++){
btn[i].addEventListener("click", sayHello)
}
btn에 클릭 이벤트리스너를 추가하여 클릭하면 HELLO라는 얼랏이 띄워지게 하였다.
click이외에도 여러가지 이벤트 리스너가 있다.
더많은 방법을 이용하기 위해서 아래 MDN사이트를 참고해보자.
MDN
서버리스는 서버가 없다는 뜻으로 오해할 수 있지만 서버가 없는 것은 아니다.
서버리스는 사용자가 서버를 직접 관리할 필요가 없는 모델을 의미한다.
작업을 수행하기 위해 컴퓨터에 서버를 만들고, 이것을 통해 데이터를 관리하는 것이 아니다. ServerLess Computing은 두 가지가 있다. BaaS(Backend as a Servie) 혹은 FaaS(Function as a Service)에의해 데이터를 처리할 수 있다.
BaaS (Backend as a Service)
리액트 4강에 나오는 Firebase가 대표적인 Baas이다. 서버와 관련된 백엔드 기능을 API를 제공한다. 보안성을 고려하여 인증 서비스, 추가 암호화 등을 관리하고, 점차 늘어나는 유저에 따라 같이 늘어나는 데이터 저장, 사용자 관리 등을 수행한다.
FaaS (Function as a Service)
대표적인 방식으로는 AWS Lambda, MS Azure Function 등이 있다.
FaaS 는 이벤트 기반 컴퓨터 실행모델이라고 한다. 프로젝트를 함수별로 구분하여 클라우드 서버에 등록하고, 사용자로부터 Request가 들어오면 필요한 함수가 실행되는데, 이 함수들이 실행되는 횟수 혹은 시간에 대하여 비용을 지불하는 방식이다.