HTML - HyperText Markup Language
.htm
.html
과 같은 확장자를 가진다.CSS - Cascading Style Sheet
JavaScript
정보의 구조화 / styling의 정의 / 제어
HTML 내부에 link 태그와 script 태그를 사용해 연결해준다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- CSS LINK-->
<link rel="stylesheet" href="style.css" />
<title>WOOKIE'S BIRTHDAY</title>
</head>
<body>
<!-- JavaScript -->
<script src="index.js"></script>
</body>
</html>
브라우저의 동작방식
브라우저가 HTML 코드를 읽어 내려가며 parsing 하면서 DOM 트리가 생성되고 이어서 Render 트리가 생성된 뒤 브라우저에 display된다.
HTML 코드의 중간에 <script></script>
태그를 삽입할 경우
브라우저는 HTML을 읽어내려가는 과정에서 script요소를 만나면 parsing 을 중단하고 자바스크립트 코드를 로드하고 parsing 하게 된다. 이 작업을 마친 뒤 다시 뒤에 남은 HTML코드를 마저 읽어내려간다.
즉, 이 과정에서 중단되는 시점으로 인해 우리가 보는 Display에 표시되는 것이 지연된다. (화면 레이아웃이 제대로 구성되지 않은 상태로 사용자에게 뷰를 제공하게 될 확률이 높기 때문에 사용자 경험(UX) 측면에서 좋지 못하다.)또 DOM 조작을 위한 코드가 스크립트 태그 안에 존재한다면 아직 파싱되지 않은 HTML요소에 있어서는 오류가 발생할 수 있다.
때문에 모든 HTML 코드가 parsing 된 후에 브라우저가 script요소를 해결할 수 있도록 body
태그의 맨 하단에 작성해준다.
이벤트란? DOM 요소와 관련되어 발생하는 사건들.
자바스크립트를 이용해 동작시킨다.
ex) click , scroll, keyDown etc..
event handler - 각 이벤트가 실행될 때 수행할 동작들을 함수로 작성해준다.
// HTML
<button type="button">ON</button>
// JavaScript
const button = document.querySelector("button"); // DOM Element
// addEventLitsner(type, litsner)
// 버튼을 click 했을 때 handleClick함수를 실행시켜준다.
button.addEventListener("click",handleClick);
// handleClick 함수는 버튼의 text를 변경해준다.
function handleClick() {
button.textContent = "OFF";
}