- Published on
๐ JS(2)-๋๋ฆผ์ฝ๋ฉ ๊ฐ์ ์ ๋ฆฌ
- ๊ธ์ด์ด
๐ ๋ชฉ์ฐจ
โจ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๊ฐ์ (ES5+): ๊ฐ์ด ๋ ธํธ๋ฅผ ์์ฑํ๋ฉฐ ๋ฐฐ์์ ๐
๐๐ป
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญ์ฌ์ ๋ชฉ์ ๋ฐ ๋ํฅ
- ์๋ฐ์คํฌ๋ฆฝํธ ๋์์๋ฆฌ
2. ์๋ฐ์คํฌ๋ฆฝํธ ๋์์๋ฆฌ
ํ๊ฒฝ์ค์ ๋ฐ 'asnyc'์ 'defer'์ ์ฐจ์ด์ (2๊ฐ)
node.js์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์์ด์ ๋ธ๋ผ์ฐ์ ์์ด๋ ํ์ผ์ ์คํํ ์ ์๋ค. ์์ ์ vscode๋ก ์งํ - open live server๋ก ๋ฐ๋ก htmlํ์ผ ์คํ
API
Application Programming Interface์ ์ฝ์๋ก
์น APIs๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋, ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ํจ์๋ค์ด๋ค.!
-> console์ ์ธ์ด์ ํฌํจ๋์ง ์์ง๋ง ๋ง์ด ์ฐ์ด๋ฏ๋ก
node.js์ web APIs์์ ์ ๊ณตํด ๋๊ฐ์ console์ฐฝ์ ์ด์ฉํด ์ถ๋ ฅํ ์ ์๋ค.
Console tab, Source tab(๋๋ฒ๊น ์ ์ ์ฉ - break point), Network tab ๋ฑ!
์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ ์ถ์ฒ ์ฌ์ดํธ developer.mozilla.org : ์ค๋ช ์ด ์์ธํ๋๊น ์ด๊ฑฐ๋ณด๊ณ ๊ณต๋ถํ๊ธฐ
asnyc vs defer
- head์์ script๋ฅผ ํฌํจํ๊ฒ ๋๋ฉด script๋ก ์ฐ์ธ jsํ์ผ์ fetchingํ๋๋๊ณ
์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋์ body์ ๋๋ถ๋ถ์ script๋ฅผ ๋ฃ๊ธฐ๋ ํ๋๋ฐ- ๋ง์ฝ์ ํด๋น htmlํ์ผ์ด script์์ jsํ์ผ์ ๋ง์ด ์์กด์ ํ๋ ๊ด๊ณ๋ผ๋ฉด
js๊ฐ fetching๋ ๋๊น์ง ๋ ์ค๋ ๊ธฐ๋ค๋ ค์ผํ๋ค.
asnyc
๊ทธ๋์ script๋ฅผ head์์ ๋ฃ๊ณ async๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด
html์ ๋ค์ด๋ฐ์ ๋ณํํ๋ค๊ฐ script๋ฅผ ๋ง๋ฌ์ ๋ asnyc๋ฅผ ๋ณด๊ณ html๊ณผ js๋ฅผ ๋ณํํด์ ๋ค์ด๋ฐ๊ฒ ๋๋ค!
๊ทธ๋ค์ js๊ฐ ๋ค fetching์ด ๋๋ฉด ๋ฐ๋ก ์คํ์ ํ ํ์ ์ด์ด์ html์ ๋ณํํ๊ฒ ๋๋ค.
์ด ๋ฐฉ์์ ์ฅ์ ์ body๋์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ js๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค๋ ๊ฒ์ด๊ณ
๋จ์ ์ผ๋ก๋ html์ ๋ณํ์ด ๋๋๊ธฐ ์ ์ js๊ฐ ์คํ๋์ด ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ํ์ด์ง ์ ๋ฌ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์๋ค๋ ์ ์ด๋ค.
defer
head์์ asnyc๋์ defer๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด
defer๋ช
๋ น์ ๋ง๋ฌ์ ๋ "์ฐ๋ฆฌ ์ด src์ ์๋ jsํ์ผ ๋ค์ด๋ฐ์~" ํ๊ณ
์ผ๋จ ๋ณํํ๋ html์ ๋ง์ ๋๊น์ง ๋ณํํ ํ (์ด ๋ js๋ ๊ฐ์ด fetching~ )
js๋ฅผ ์คํํ๋ค.
-> defer์ด ๊ฐ์ฅ ์ข์ ์ต์
์ด์ฅฌ
use strict
์์ vanilaJs๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ(TypeScript๋ฅผ ์ธ ๋๋ ์ ๊ฒฝ์์จ๋ ๋จ)
'use strict';
jsํ์ผ ๋งจ ์์ 'use strict'๋ฅผ ์ ์ธํด์ strict ๋ชจ๋๋ก ๋ฌธ๋ฒ์ ๋ฑ ๋ง๊ฒ ์์ฑํ๋๋ก ํ๋๊ฒ ์ข๋ค!