์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ํ๋ก ํธ์๋
- ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ก๊ทธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- REACT
- CSS
- history api
- Flex
- ๋ฐ๋ธ์ฝ์ค
- ์ฝ๋ฉํ ์คํธ
- Props
- useRef
- Gatsby
- useEffect
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- float
- position
- ํ๋ก๊ทธ๋๋จธ์ค
- fetch API
- Today
- Total
Daehyunii's Dev-blog
01์ฅ ํ๋ก๊ทธ๋๋ฐ, 02์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋? ๋ณธ๋ฌธ
01์ฅ ํ๋ก๊ทธ๋๋ฐ, 02์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋?
Daehyunii 2022. 6. 21. 22:29์ฑ ์ฝ๊ธฐ ์์ ์ :
๊ฐ์๋ฅผ ํตํด ์ ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ด๋ จ ๋ด์ฉ๋ค์ ๋น ๋ฅด๊ฒ ์์๋ดค์ผ๋ฏ๋ก, ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ์ด ๊ฐ๋ ๋ฐ ๋์ ์๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ํ์ตํ๊ธฐ ์ํด ๋ณธ ์ฑ ์ ์ฝ์ด ๋๊ฐ๋ณด๋ ค ํฉ๋๋ค!
01์ฅ ํ๋ก๊ทธ๋๋ฐ
1.1 ํ๋ก๊ทธ๋๋ฐ์ด๋? :
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์ปดํจํฐ์๊ฒ ์คํ์ ์๊ตฌํ๋ ์ผ์ข ์ ์ปค๋ฎค๋์ผ์ด์ ์ด๋ค.
๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๋ฐํ์ผ๋ก ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ ์ ์ํ ํ, ์ ํํ๊ณ ์์ธํ๊ฒ ์๊ตฌ์ฌํญ์ ์ปดํจํฐ์๊ฒ ์ค๋ช ํ๋ ์ผ๋ จ์ ๊ณผ์ ์ด๋ฉฐ,
๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ด ์ฝ๋์ด๋ค. ์ด๋ฌํ ๊ณผ์ ์ ์ ์ฒ๋ฆฌํด ๋๊ฐ๊ธฐ ์ํด์๋ Computational thinking, ์ฆ ์ปดํจํ
์ฌ๊ณ ๋ฐฉ์์ด ํ์ํ๋ค.
1.2 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด :
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ ๊ธฐ๊ณ์ด๋ก ์ปดํจํฐ์๊ฒ ์ ๋ฌํด์ผ ํ๋ค. ํ์ง๋ง, ๊ธฐ๊ณ์ด๋ ์ฌ๋๋ค์ ์ธ์ด์ ์ฒด๊ณ๊ฐ ๋๋ฌด๋๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํ์ฉํ๊ธฐ ๋งค์ฐ ์ด๋ ต๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ฝ์๋ ๊ตฌ๋ฌธ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด
ํ๋ก๊ทธ๋จ์ ์์ฑํ ํ, ๊ทธ๊ฒ์ ์ปดํ์ผ๋ฌ/์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํด ๊ธฐ๊ณ์ด๋ก ์ปดํจํฐ์๊ฒ ์ ๋ฌํ๋ ๊ฒ์ด๋ค. ์ฆ, ์ผ์ข ์ ์ธ๊ณต์ด๋ค.
1.3 ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ :
ํ๋ก๊ทธ๋๋ฐ์ ์ธ์ด๋ ๊ตฌ๋ฌธ(syntax)์ ์๋ฏธ(semantics)๋ก ๊ตฌ์ฑ๋๋ค. ๋ฌธ๋ฒ์ ์ ์๊ณ ์๋ค๊ณ ํ์ฌ ์ธ์ด๋ฅผ ์ ์ฌ์ฉํ๋ค๊ณ ๋งํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์๋ง์ ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ์ ์ผ๋ก ์ณ๊ฒ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋๋ฐ ํด์ผ ํ๋ค.
02์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋?
2.1 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ :
'๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ'์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ณด์กฐ์ ๊ธฐ๋ฅ ์ํ์ ์ํ์ฌ '๋ธ๋ ๋ด ์์ดํฌ'๊ฐ ๊ฐ๋ฐํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋์ ํ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฆ์ ๋ณ์ฒ์ฌ๋ ๋ชจ์นด > ๋ผ์ด๋ธ์คํฌ๋ฆฝํธ > ์๋ฐ์คํฌ๋ฆฝํธ ์์ผ๋ก ๋ช ๋ช ๋์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ถ์ ์งํ, '๋ง์ดํฌ๋ก์ํํธ'๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์๋ฒ์ ์ธ Jscript ์ถ์ํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๊ธฐ์ ์ฒํ๋ค.
2.2 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ :
์ด์ฐฝ๊ธฐ '๋ง์ดํฌ๋ก์ํํธ' ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ์ ํ์ฌํ Jscript์ '๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ'์ ๋ธ๋ผ์ฐ์ ์ ํ์ฌํ Javascript๊ฐ ํ์คํ๋์ง ๋ชปํ๊ณ ์ ๋นํ ํธํ๋๋ฉด์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ก์ธํด ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์์ ์ผ๋ก ๋์ํ๋ ์นํ์ด์ง๋ฅผ ๊ฐ๋ฐํ๊ธฐ๊ฐ ๋ฌด์ฒ ์ด๋ ค์ ์ก๊ณ , '๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ'๋ ์ปดํจํฐ ์์คํ ๋น์๋ฆฌ ํ์คํ ๊ธฐ๊ตฌ์ธ ECMA international์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ๋ฅผ ์์ฒญํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ECMA-262 ํ์ํ๋ค. (ECMAscript๋ก ๋ช ๋ช )
@๊ธฐ์ด๊ฐ๋
-์น ๋ธ๋ผ์ฐ์ : ์ธํฐ๋ท ์ฌ์ดํธ์ ์ ์ ํ ์ ์๋ ๋๊ตฌ ,์ฆ ๋ ๋๋ง ๋๊ตฌ ex) Safari, Chrome, Internet explorer
-์น ํ์ด์ง : ์จ๋ผ์ธ์ผ๋ก ๋ณผ ์ ์๋ ๋จ์ผ ๋ฌธ์ ๋๋ ํ
์คํธ, ์ด๋ฏธ์ง, ๋น๋์ค๋ก ๊ฐ๋์ฐฌ ํ์ด์ง
-์น ์ฌ์ดํธ : ๊ณต๋ ์ค๋ ๋๋ฅผ ๊ณต์ ํ๋ ํ์ด์ง์ ๋ชจ์
-์น ์๋ฒ : ์น ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ํ๋กํ ์ฝ๋ก ์์ฒญ์ ๋ฐ์,
HTML ๋ฌธ์ ๋ฑ๊ณผ ๊ฐ์ ์ ์ ์น ํ์ด์ง๋ฅผ ์๋ตํด์ฃผ๋ ์ํํธ์จ์ด
-ํด๋ผ์ด์ธํธ : ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋ ์๋ฒ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ๋ ์ปดํจํฐ
2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ฅ์ ์ญ์ฌ :
์ด์ฐฝ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์นํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ํ์ ์ ์ฉ๋๋ก ์ฌ์ฉ๋์๋ค. ์ด ์๊ธฐ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฃผ๋ก ์น ์๋ฒ์์ ์คํ๋์๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ HTML๊ณผ CSS๋ฅผ ๋จ์ํ ๋ ๋๋งํ๋ ์์ค์ด์๋ค.
@๊ธฐ์ด๊ฐ๋
-๋ก์ง : ๋
ผ๋ฆฌ์ ํ๋ฆ
-๋ ๋๋ง : HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํด์ํด์ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ
2.3.1 Ajax์ ๋ฑ์ฅ
์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๊ฐ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ธฐ๋ฅ์ผ๋ก 'XMLHttprequest'๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ์ฅํ๋ค.
์ด์ ์ ์น ํ์ด์ง๋ ์์๊ณผ ๋์<html></html>๋ก ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์์ ํ HTML ์ฝ๋๋ฅผ ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ์ ์น ํ์ด์ง
์ ์ฒด๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ์ด๋ก์ธํด ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ์ด ๋ฐ์ํ๋ค. Ajax๋ ํ์ํ ๋ฐ์ดํฐ๋ง ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ถ๋ถ๋ง ํ์ ์ ์ผ๋ก ๋ ๋๋งํ์ฌ ๊ธฐ์กด์ ๋นํจ์จ์ฑ์ ๊ฐ์ ํ๋ค.(์๋ฐ์คํฌ๋ฆฝํธ์ Ajax๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง '๊ตฌ๊ธ ๋งต์ค'์์ ๊ฒ์ฆํ์)
@๊ธฐ์ด๊ฐ๋
-๋น๋๊ธฐ : Asynchronous ๋์์ ์ผ์ด๋์ง ์๋(๋๊ธฐ ๋ฐฉ์์ ๋นํด ๋ณต์กํ์ง๋ง, ๋ ํจ์จ์ ์)
-๋๊ธฐ : synchronous ๋์์ ์ผ์ด๋๋
2.3.2 jQuery์ ๋ฑ์ฅ
jQuery์ ๋ฑ์ฅ์ผ๋ก ๋ค์ ๋ฒ๊ฑฐ๋กญ๊ณ ๋
ผ๋์ด ์์๋ dom(document object model)์ ์ฝ๊ฒ ์ ์ดํ ์ ์๊ฒ ๋ง๋ค์ด ์ฃผ์์ผ๋ฉฐ, ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๋ ์ด๋ ์ ๋ ํด๊ฒฐ๋์๋ค.
2.3.3 V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ฑ์ฅ
'๊ตฌ๊ธ ๋งต์ค' ์ดํ๋ก ๋์ฑ ๋น ๋ฅด๊ฒ ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ์์ฑ์ด ๋๋ ๋์๊ณ , '๊ตฌ๊ธ'์ V8์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ง๋ค์๋ค.
๊ทธ ๊ฒฐ๊ณผ ๊ณผ๊ฑฐ ์น ์๋ฒ์์ ์ํ๋๋ ๋ก์ง๋ค์ด ๋ง์ ๋ถ๋ถ ๋ธ๋ผ์ฐ์ ๋ก ์ด๋ํ๊ณ , ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์์ ํ๋ฐํธ์๋ ์์ญ์ด
์ฃผ๋ชฉ๋ฐ๋ ๊ณ๊ธฐ๋ก ์์ฉํ๋ค.
@๊ธฐ์ด๊ฐ๋
-์๋ฐ์คํฌ๋ฆฝํธ ์์ง : ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ ์ ์๋ ์ธํฐํ๋ฆฌํฐ์
2.3.4 Node.js์ ๋ฑ์ฅ
'๋ผ์ด์ธ ๋ฌ'์ด ๋ฐํํ '๊ตฌ๊ธ' V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋ง๋ค์ด์ง ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ผ๋ก,
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ธ๋ผ์ฐ์ ์์ ๋
๋ฆฝ์ํจ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ์ด๋ค.
์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฒ์ด๋ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค.
ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํฌ๋ก์ค ํ๋ซํผ์ ์ํ ๊ฐ์ฅ ์ค์ํ ์ธ์ด๋ก ์ฃผ๋ชฉ ๋ฐ๊ณ ์๋ค.
@๊ธฐ์ด๊ฐ๋
-๋ฐํ์ : ๊ฐ๋จํ๊ฒ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ์
-ํฌ๋ก์ค ํ๋ซํผ : ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์๋
2.3.5 SPA ํ๋ ์์ํฌ์ ๋ฑ์ฅ
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฃผ๋ชฉ๋ฐ๋๊ฒ๊ณผ ๋์์ ๊ฐ๋ฐ ๋ฐฉ์์ด ๋์ฑ ๋ณต์กํด์ก๊ณ , ๊ทธ๋ก ์ธํด ๋ง์ ํจํด๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ฒจ๋ฌ๋ค.
ํ์ง๋ง, ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ํคํ
์ฒ์ ๊ตฌ์ถ์ ์ด๋ ต๊ฒ ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๊ฒ ๋์๊ณ ํ์ฐ์ ์ผ๋ก ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ๊ฒ ๋์๋ค.
@๊ธฐ์ด๊ฐ๋
-ํ๋ ์์ํฌ : ์ผ์ ํ ๋ชฉ์ ์ ๋ฐ๋ผ ํจ์จ์ ์ผ๋ก ๊ตฌ์กฐ๋ฅผ ์ง๋๋ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก ํด๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ์์
-๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์ฝ, ํฑ๋, ๋ง์น์ ๊ฐ์ ์ผ์ข
์ ๋๊ตฌ
2.4 ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript์ ๊ด๊ณ
ECMAScript๋ ECMA-262๋ฅผ ์๋ฏธํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ์ฌ์์ผ๋ก ํต์ฌ ๋ฌธ๋ฒ์ ๊ท์ ํ๋ค.
๊ฐ ๋ธ๋ผ์ฐ์ ์ ์กฐ์ฌ๋ ECMAScript ์ฌ์์ ์ค์ํด์ ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ตฌํํ๋ค.
(ECMAscript ⊂ ์๋ฐ์คํฌ๋ฆฝํธ)
2.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ธํฐํ๋ฆฌํฐ(interpreter)์ธ์ด๋ก ๊ตฌ๋ถ๋จ cf)์ปดํ์ผ๋ฌ ์ธ์ด
๋ฉํฐ ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค
ํ๋กํ ํ์
๊ธฐ๋ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ค
'๐ Language & CS knowledge > JavaScript (๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
09์ฅ ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2022.06.28 |
---|---|
08์ฅ ์ ์ด๋ฌธ (0) | 2022.06.27 |
07์ฅ ์ฐ์ฐ์ (0) | 2022.06.25 |
05์ฅ ํํ์๊ณผ ๋ฌธ, 06์ฅ ๋ฐ์ดํฐ ํ์ (0) | 2022.06.23 |
04์ฅ ๋ณ์ (0) | 2022.06.22 |