lil.dev
Published on

๐ŸŽ‰ JS(2)-๋“œ๋ฆผ์ฝ”๋”ฉ ๊ฐ•์˜ ์ •๋ฆฌ

๊ธ€์“ด์ด

    ๐Ÿ“Œ ๋ชฉ์ฐจ

    Welcome

    โœจ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ๊ฐ•์˜ (ES5+): ๊ฐ™์ด ๋…ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ๋ฐฐ์›Œ์š” ๐Ÿ“’

    ๐Ÿ’๐Ÿป

    1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์™€ ๋ชฉ์  ๋ฐ ๋™ํ–ฅ
    2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™์ž‘์›๋ฆฌ

    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๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด asnyc img html์„ ๋‹ค์šด๋ฐ›์•„ ๋ณ€ํ™˜ํ•˜๋‹ค๊ฐ€ script๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ asnyc๋ฅผ ๋ณด๊ณ  html๊ณผ js๋ฅผ ๋ณ‘ํ–‰ํ•ด์„œ ๋‹ค์šด๋ฐ›๊ฒŒ ๋œ๋‹ค! ๊ทธ๋‹ค์Œ js๊ฐ€ ๋‹ค fetching์ด ๋˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰์„ ํ•œ ํ›„์— ์ด์–ด์„œ html์„ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.
    ์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ body๋์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” js๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ 
    ๋‹จ์ ์œผ๋กœ๋Š” html์˜ ๋ณ€ํ™˜์ด ๋๋‚˜๊ธฐ ์ „์— js๊ฐ€ ์‹คํ–‰๋˜์–ด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€ ์ „๋‹ฌ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

    defer
    head์•ˆ์— asnyc๋Œ€์‹  defer๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด
    defer img defer๋ช…๋ น์„ ๋งŒ๋‚ฌ์„ ๋•Œ "์šฐ๋ฆฌ ์ด src์— ์žˆ๋Š” jsํŒŒ์ผ ๋‹ค์šด๋ฐ›์ž~" ํ•˜๊ณ 
    ์ผ๋‹จ ๋ณ€ํ™˜ํ•˜๋˜ html์„ ๋งˆ์ € ๋๊นŒ์ง€ ๋ณ€ํ™˜ํ•œ ํ›„ (์ด ๋•Œ js๋„ ๊ฐ™์ด fetching~ )
    js๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    -> defer์ด ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์ด์ฅฌ

    use strict ์ˆœ์ˆ˜ vanilaJs๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ(TypeScript๋ฅผ ์“ธ ๋•Œ๋Š” ์‹ ๊ฒฝ์•ˆ์จ๋„ ๋จ)

    'use strict';
    

    jsํŒŒ์ผ ๋งจ ์œ„์— 'use strict'๋ฅผ ์„ ์–ธํ•ด์„œ strict ๋ชจ๋“œ๋กœ ๋ฌธ๋ฒ•์— ๋”ฑ ๋งž๊ฒŒ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค!