<웹의 기본>
Browser API라고 하면 웹 브라우저에 설치된 API로, 데이터를 보이게 하고 복잡한 일들을 하게 함
1. DOM document object moel API : 동적으로 페이지의 스타일을 정하는 등 view와 연관.
2. Geolocation APi : 지리적 정보를 검색할 수 있게 해 줌
3. Canvas & WebGL : 2d/3d그래픽을 만들 수 있게 함
4. HTMLMediaElement/ WebRTC 등 : 오디오/비디오 API. 웹 상에서 음악과 비디오를 재생하고, 캡쳐, 표시한하는 등의 것.
5. 이 외에 기본 제공되는 것이 아닌 누군가가 제작한 third party API가 있음.
브라우저가 웹페이지를 불러올 때 => 실행 환경안에서 html, css, js코드가 실행됨
자바스크립트는 html & css가 결합되어 웹페이지 상에 올라간 후 브라우저의 자바스크립트 엔진에 의해 실행 됨.
(즉, 웹에서의 실행 순서 html&css => js)
브라우저 탭 => 보통 독립된 실행 환경(runtime). , 보안상 좋음.
#js 실행 순서
일반적으로 위 -> 아래
<head>~~~~~
<script>{자바스크립트 코드 삽입}</script>
</head>
<body></body>
</html>
외부 코드를 import하는 경우에는 좀 최신 문법인 async를 사용
Async는 비동기 방식으로, script태그에 도달햇을 때 브라우저에게 html요소를 멈추지 않고 다운로드받ㄱ도록 유지시킴.
예제
async & defer
더 깊게 들어가보면 이러한 코드문제를 해결하기 위한 방법은 실제로 두가지가 있습니다. — async 와defer 입니다. 두 가지의 차이를 봅시다.
async 스크립트는 페이지 렌더링의 중단 없이 스크립트를 다운로드 하고, 또한 스크립트의 다운로드가 끝나자 마자 이를 실행시킵니다. async는 외부 스크립트끼리의 구체적인 실행 순서는 보장하지 않고, 단지 나머지 페이지가 나타나는 동안 스크립트가 비동기방식으로 다운로드 되어 중단되지 않는다는 것만 보장합니다. async는 각각의 스크립트가 독립적으로, 서로에게 의존하지 않는 관계일 때 적절합니다.
아래의 예제를 보시죠:
3개의 스크립트를 로딩하지만 이들의 순서는 보장할 수 없습니다. 이는 script2.js나 script3.js에 있는 함수가 jquery.js의 함수를 사용한다면 에러를 발생될 수 있다는 것을 의미합니다.
Defer는 이와 다르게 순서대로 다운로드 한 후 모든 스크립트와 내용이 다운로드 되었을 때 실행됩니다:
따라서 위의 예제의 경우에는 jquery.js -> script2.js -> script3.js 의 순서가 보장됩니다.
요약 :