html에서 js를 포함할 때

어떻게 포함하는 게 가장 효율적일까?

 

위와 같이 <head>에 <script>를 추가하는 경우,

HTML을 parsing하다가 <script>태그를 만나면 parsing을 멈추고 main.js를 다운받는다

그리고 js파일을 실행한 뒤, parsing을 이어간다.

 

parsing HTML → [blocked] fetching js → executing js →parsingHTML → [page is ready]

 

위와 같은 방법의 단점은 무엇일까?

 

만약 js파일의 크기가 어마어마하게 크고, 인터넷이 느리다면

사용자가 해당 웹사이트를 보는 데까지 많은 시간이 소요된다.

좋은 방법아님!

 

그래서 다음으로 많이 하는 방법이 <body>안에 <script>추가하기!

parsing HTML → [page is ready] fetching js → executing js

js를 받기 전에 이미 페이지가 준비되어서 사용자가 페이지를 볼 수 있다.

 

이 방법의 단점은 무엇일까?

만약 웹사이트가 js가 매우 의존적이라면, 사용자가 정상적인 페이지를 보는 데에 어려움이 있다.

 

다음 방법으로는 <script> 태그 안에 async라는 속성 사용하기!

async는 boolean 타입이기 때문에 이렇게 선언하는 것만으로 true로 설정되어

async옵션을 사용할 수 있다.

 

html과 js파일을 병렬로 다운로드받는다.

js파일의 다운로드가 끝나면 그때 parsing을 멈추고

다운로드된 js파일을 실행한다.

그 후 나머지 html파일을 parsing한다.

 

이 방법의 장점은?

다운로드 시간을 줄일 수 있다.

 

단점은?

parsing되기 전에 실행되기 때문에 원하는 html 요소가 아직 정의되어 있지 않을 수 있다.

사용자가 페이지를 보는데 여전히 시간이 걸린다.

 

그렇다면 defer속성을 사용해보자

html을 parsing하다가 defer를 만나면 'main.js를 다운로드받자~' 명령만 시켜놓고

끝까지 parsing을 수행한다.

그리고 parsing이 끝난 다음에 다운로드된 js를 실행한다.

가장 좋은 방법!

 

async와 defer의 차이를 좀 더 알아보자

async는 js파일이 다운로드되는 순서대로 실행하기 때문에(정의된 순서가 아니라)

만약 웹사이트가 순서에 의존적이라면 문제가 될 수 있다.

defer는 정의한 순서대로 실행된다.

 

defer을 사용하는 것이 가장 효율적이고 안전하다!

 

추가적으로 js를 사용할 때는

가장 윗부분에 'use strict;' 를 쓰는 게 좋다

 

js는 flexible!

flexible 하다는 것은 dangerous하다는 것!

use strict를 써놓으면 선언되지 않은 변수 사용 등을 막을 수 있다.

또한 strict모드를 사용하면 js엔진이 조금 더 효율적으로 js를 분석할 수 있다. 

 

 

 

 

 

유투브 보고 정리했습니다~!

 

[ 출처 ]

https://www.youtube.com/watch?v=tJieVCgGzhs

 

'Web Develop > JavaScript' 카테고리의 다른 글

Hello World! 콘솔에 출력하기  (0) 2020.08.31

텍스트에디터(vsCode와 같은)에서 js파일 만들기

위의 파일을 실행하기 위해 node.js를 다운로드하자

https://nodejs.org/ko/download/

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

node.js에는 js엔진이 있어 브라우저 없이도 js파일을 실행할 수 있다.

 

 

앞으로 web api를 배울 것이기 때문에 이제 vsCode를 이용하여 html과 js를 연결해보자

 index.html를 만들고, <title> 밑에 <script>태그를 추가하자

index.html 파일과 main.js 연결하기

index.html 을 실행시켜보자

 

콘솔창에 main.js의 내용이 출력된 것을 확인할 수 있다

 

API(Application Programming Interface)

 

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

 

Console API

Console API는 코드의 특정 지점에서 값이나 변수를 기록하고, 작업의 소요 시간을 알아내는 등 개발자가 사용할 수 있는 디버깅 기능을 제공합니다.

developer.mozilla.org

브라우저에서 제공하는 dev tool(Elements, Console 등)을 잘 활용하면 좋다

브라우저의 Console 탭에서는 직접 코드를 입력하여 결과를 확인할 수 있다.

 

Source 탭은 break point를 사용하여 디버깅할 때 유용하다.

Network 탭에서는 네트워크가 어떻게 오고 가는지, 데이터의 사이즈가 어떻게 되는지 알 수 있다.

 

자바스크립트의 공식사이트

https://www.ecma-international.org/

 

Welcome to Ecma International

  Welcome Ecma International is an industry association founded in 1961, dedicated to the standardization of information and communication systems. We are also here: Since 1961 and continuing in full force today, Ecma International®facilitates the timely

www.ecma-international.org

모든 언어를 공부할 때는 공식사이트를 이용하는 것이 좋지만

Ecma의 경우 공부하는 데에는 부적합..(난해..)

 

MDN을 통해 공부하자

https://developer.mozilla.org/ko/

 

MDN Web Docs

MDN 웹 문서 사이트는 HTML, CSS, 및 웹 사이트와 프로그레시브 웹 앱을 위한 API를 포함한 오픈 웹 기술에 대한 정보를 제공합니다. 또한 Firefox 개발자 도구와 같은 Mozilla 제품을 위한 개발자 지향 문

developer.mozilla.org

w3schools를 추천하기도 하지만

간혹 w3schools와 MDN에서 같은 내용이지만 다르게 설명하는 경우가 있고,

MDN이 훨씬 설명도 잘 되어있고 예제들이 많다.

또한 최신정보도 빠르게 반영을 하기 때문에 MDN을 추천!

많은 개발자들이 MDN을 공식사이트처럼 이용하고 있다.

 

 

유투브 보고 정리했습니다~!

 

[ 출처 ]

https://www.youtube.com/watch?v=tJieVCgGzhs

 

'Web Develop > JavaScript' 카테고리의 다른 글

async VS defer  (0) 2020.08.31

+ Recent posts