JavaScript/code

[javascript] js 연결 방식 / js 작성 전 'use strict' 작성하기

아2 2023. 5. 30. 19:35

*순수 바닐라자바스크립트 작성전에 ‘use strict’; 를 작성하자 ⭐⭐⭐⭐⭐

-자바스크립트는 유연한 언어이기때문에 개발자의 실수가 많을 수 있다.

-해당 선언은 비상식적인것을 쓸 수 없게 하는 엄격한 모드로 실행하는 방법이다.

'use strict';

console.log('Hello World!');

꿀팁 ==>> type=modaule 선언하면 자동으로 엄격모드에 진입함

<script src="script.js" type="module"></script>

* head 안에 script 넣기

-스크립트 다운로드 -> 실행 -> 파싱.. 

=> js 파일의 용량이 크고 웹이 느리다면 아주 많은 시간이 소요됨. ❌


 * body 안 가장 맨 끝에 script 넣기

-자바스크립트에 의존적인 사이트라면 사용자가 정상적으로 페이지를 보기전까지 패칭하는 시간을 기다려야함 . ❌


async와 defer 속성은 스크립트가 로드되는 동안 다른 작업을 수행할 수 있도록 해주지만, 가장 큰 차이점은 스크립트 실행 시점임.

async는 스크립트 로드가 완료되는 대로 즉시 실행되지만, defer는 페이지의 파싱이 완료된 후에 실행됨.

 

 

* head 안에 script를 사용하되 async 선언방식

-장점 : body 끝에 붙어있는 것보다는 다운로드 받는시간 절약 가능

-자바스크립트 실행하기 전까지 기다림

-여러가지 스크립트가 있을때, 먼저 다운로드 끝난 애들부터 수행됨

<!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 async src="./01.js"></script>
</head>
<body>
    
</body>
</html>

* head 안에 script를 사용하되 defer 선언방식 ⭐⭐⭐⭐⭐

-명령만 시켜두고, 나머지 html,css를 퍼싱하게 됨.

-위를 전부 수행했을때 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">
    <title>Document</title>
    <script defer src="app.js"></script>
</head>
<body>
    
</body>
</html>

===> 위의 type="module"으로 지연 실행이 이미 내장되어 있기 때문에 defer 속성을 별도로 선언할 필요가 없다.

고로 defer 선언할 필요 없이 아래처럼 작성해도 가능!

<script src="assets/js/main.js" type="module"></script>