본문 바로가기
Front-end/Web

[JS] 콘솔에 출력, script async와 defer의 차이점 및 공부방향

by 안녕주 2021. 8. 26.

Hello World! 출력

1. VS code를 킨다.

2. main.js의 이름으로 아래의 코드 작성

console.log('Hello World!');

3. 실행한다.

3-1. node.js가 없으면 설치한 후 실행한다.

 

Preparation

1. index.html 생성 후 아래의 코드 작성

<!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">
    <title>Document</title>
    <script src="./main.js"></script>
</head>
<body>
    
</body>
</html>

2. Cmd + Option + i 를 통해 서버를 띄우고 Console을 보면 Hello World가 출력되어있다.

 

Dev Tools

1. Console API(Application Programming Interface)는 브라우저가 제공하는 함수들이 있다.

https://developer.mozilla.org/ko/docs/Web/API/Console_API

2.JS의 공식 사이트

https://www.ecma-international.org

3. 개발자들이 주로 참고하는 JS 사이트

https://developer.mozilla.org/ko/docs/Web/JavaScript

4. 개발자용 콘솔창에서 js코드를 작성 가능하다

 

async vs defer

[head] 

1. html 파일 head 안에 script를 포함하게 되면 사용자가 html파일을 다운받았을때 브라우저가 한줄씩 분석한것을 css와 병합해서 DOM요소로 변환을 한다.

2. html을 parsing하다가 script 코드를 만나면 서버에서 다운받고 실행한 후 다시 parsing을 한다. 

==> (단점) 시간이 오래걸린다.

 

[body]

1. body 맨끝에 script추가하게 되면 html을 parsing 한 후, 페이지를 실행 한 후에 js파일을 fetching해서 실행한다.

==> (단점) 사용자가 기본적인 것은 빨리 보지만, js에 의존적인 페이지라면 정상적인 페이지를 보기전까지 시간이 더 오래 걸린다.

 

[head + async속성]

1. head 안에 async속성을 추가하면 브라우저가 병렬로 js 파일을 fetching한다.

2. fetching이 끝나면 html파일을 parsing하는 것을 멈추고 js파일을 실행한다.

3. 그 후에 다시 html을 parsing한다. -> 실행

==> (장점) 다운로드 받는 시간을 절약한다.

==> (단점) html이 실행하기 전에 js파일이 실행되기 때문에, 우리가 원하는 요소가 정의가 덜되었을 수도 있다.

==> (단점) js가 실행될때 멈추기 때문에 사용자가 페이지를 보는데 시간이 필요하다.

* 여러개의 asyn를 사용하는 경우 fetching이 먼저되는 것부터 실행한다. (순서에 의존적인 js를 사용하는 경우 문제 발생)

 

[head + defer속성] *효율적

1. head 안에 defer 속성을 추가하면 html parsing은 계속하고, js fetching을 병렬로 진행한다.

2. parsing이 끝나서 html이 실행되면, js를 실행한다. 

*여러개의 defer를 사용하는 경우 순서대로 실행을 한다.

 

Use Strict!

//Type Script를 사용할때는 선언할 필요는 없다.
//자바스크립트언어를 만들때 굉장히 유연하게 만들어졌다 == 위험할 수 있다.
//선언되지 않은 변수에 값을 할당한다든지 등등
// use strict를 선언하면 ECMAScript5에 정리되어있다.
'use strict';

console.log('Hello World!');

Thanks for 드림코딩

https://youtu.be/tJieVCgGzhs

댓글