일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jenkins github
- IntelliJ
- nginx
- jpa
- 리눅스
- CI/CD
- docker network
- error
- REACT
- MySQL
- jenkins 설치
- JavaScript
- java
- vue.js
- Spring Boot
- jenkins jdk
- jenkins install
- grpc
- jenkins maven
- MongoDB
- Jenkins
- Jenkins Pipeline
- 리액트
- grafana
- spring
- Linux
- jenkins github 연동
- subnetmask
- gradle
- Docker
- Today
- Total
뭐든 즐기면서 ;)
Javascript html내 선언하는 방법 4가지(async&defer) 본문
브라우저가 html을 분석하는 단계 구분
- html 분석(parsing)
- css/html 병합
- js 다운로드
- 다운로드된 js 실행
JS <script> 선언 방법
1. head에 선언
<html>
<head>
<meta charset="UTF-8"/>
<title>이야아아</title>
<script src="main.js"></script>
</head>
<body></body>
</html>
브라우저가 html을 분석하는 순서 : html 다운로드 > 브라우저가 html을 한 줄 씩 분석(parsing) > '<script>'를 만났을 때, html parsing을 멈추고 js를 다운로드 & 실행 > 다시 html parsing 진행 > parsing 완료 > 사용자에게 노출
단점 : js 사이즈가 크다면 사용자가 web사이트를 보는 데까지 시간이 오래 걸림.
2. body 최하단에 선언
<html>
<head>
<meta charset="UTF-8"/>
<title>이야아아</title>
</head>
<body>
...
<script src="main.js"></script>
</body>
</html>
분석 순서 : html 다운로드 > parsing > parsing(css+html병합까지)완료 > 사용자 노출 > js 다운로드&실행
장점 : js파일을 다운로드 하기 전에 이미 html이 사용자에게 보여질 수 있음.
단점 : js에 의존적인 APP이라면, 의미있는 컨텐츠를 보기 위해서는 결국, js를 다운로드&실행하는 시간까지 기다려야 함.
3. async
<html>
<head>
<meta charset="UTF-8"/>
<title>이야아아</title>
<script async src="main.js"></script>
</head>
<body></body>
</html>
분석 순서 : html 다운로드 > parsing > '<script>'태그 만남 > js 다운로드 요청 > 다운로드 완료 >> js실행 > parsing 재진행
> parsing 계속 진행 >>>>>>>>>>>>>>>>>>>>>>>>>>↗
장점 : js 다운로드가 병렬적으로 이루어지기 때문에 모든 단계완료 시간이 줄어듬.
단점 : js 다운로드가 html parsing보다 일찍 끝나게 될 때, js 파일 내에서 html dom요소를 조작하려 하는 부분이 있다면 해당 dom요소를 찾을 수 없다는 오류를 야기시킴.
4. defer
<html>
<head>
<meta charset="UTF-8"/>
<title>이야아아</title>
<script defer src="main.js"></script>
</head>
<body></body>
</html>
분석 순서 : html 다운로드 > parsing > '<script>'태그 만남 > js 다운로드 요청 > js 다운로드 진행 & html parsing 진행 > parsing 완료 후 다운로드 완료 된 js들 실행
html을 parsing하는 동안 js 파일을 다운로드 하고, html parsing이 모두 완료되면 다운로드 되어진 js를 실행
async와 defer 차이점
async : 다수의 js 파일 a.js, b.js, c.js <script>태그가 있다면 선언되어진 순서와 상관없이 먼저 다운로드 완료된 js가 실행되어짐. 서로 의존적인 js라면 오류가 발생하게 됨.
defer : html을 parsing하는 동안 a,b,c.js가 다운로드 되고, parsing이 완료되었을 때 다운 완료된 js를 선언한 순서대로 실행함.
'FRONT > Javascript' 카테고리의 다른 글
javascript Function(함수) (0) | 2022.12.16 |
---|---|
Javascript data type (1) | 2022.12.15 |
js 단축키 적용 / javascript 단축키 적용 (0) | 2022.09.22 |
Javascript prototype (0) | 2022.06.27 |
javascript var let const (0) | 2021.11.30 |