<script type="module">
<script type="module">
a = 5; // 에러
</script>
<script type="module">
// user는 해당 모듈 안에서만 접근 가능합니다.
let user = "John";
</script>
<script type="module">
alert(user); // Error: user is not defined
</script>
지연 실행
<script type="module">
alert(typeof button); // 모듈 스크립트는 지연 실행되기 때문에 페이지가 모두 로드되고 난 다음에 alert 함수가 실행되므로
// 얼럿창에 object가 정상적으로 출력된다. 모듈 스크립트는 아래쪽의 button 요소를 '볼 수' 있다.
</script>
<script>
alert(typeof button); // 일반 스크립트는 페이지가 완전히 구성되기 전이라도 바로 실행된다.
// 버튼 요소가 페이지에 만들어지기 전에 접근하였기 때문에 undefined가 출력되는 것을 확인할 수 있다.
</script>
인라인 모듈 스크립트도 비동기 처리할 수 있다.
모듈 스크립트에선 async
속성을 인라인 스크립트에도 적용할 수 있다.
<!-- 필요한 모듈(analytics.js)의 로드가 끝나면 -->
<!-- 문서나 다른 <script>가 로드되길 기다리지 않고 바로 실행된다.-->
<script async type="module">
import {counter} from './analytics.js';
counter.count();
</script>
외부 오리진(도메인이나 프로토콜, 포트가 다른 오리진)에서 스크립트를 불러오려면 CORS 헤더가 있어야 한다.
<!-- another-site.com이 Access-Control-Allow-Origin을 지원해야만 외부 모듈을 불러올 수 있다.-->
<!-- 그렇지 않으면 스크립트는 실행되지 않는다.-->
<script type="module" src="http://another-site.com/their.js"></script>
중복된 외부 스크립트는 무시된다.
src
속성값이 동일한 외부 스크립트는 한 번만 실행된다. <!-- my.js는 한 번만 로드 및 실행된다. -->
<script type="module" src="my.js"></script>
<script type="module" src="my.js"></script>
<head>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-storage.js"></script>
<script>
const firebaseConfig = {
본인 설정 내용 채우기
};
firebase.initializeApp(firebaseConfig);
</script>
</head>
<script>
에 defer
속성을 넣는다<body>
태그의 마지막에 <script>
를 넣는다.<script type="module">
을 활용한다.<head>
<script type="module">
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js";
import { getFirestore } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { collection, addDoc } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
const firebaseConfig = {
본인 설정 내용 채우기
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
</script>
</head>