์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- ํผํ
- Porject
- object
- ๋๊ธฐ
- prj
- JS #ํ๋ก์ ํธ
- setTimeout()
- Import
- sql
- db
- ajax
- js
- ๊ฒ์
- mysql
- ๋น๋๊ธฐ
- promise
- eport
- addEventListener
- execCommand
- slow and steady
- webpack
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- await
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- json
- callback
- database
- async
- https://m.blog.naver.com/tt2t2am1118/221010125300
- Project
- Today
- Total
C-log
DOM, ๋๊ธฐ์ ๋น๋๊ธฐ, Hook, Promise(callback) ๋ณธ๋ฌธ
1. DOM(Document Object Model)์ด๋?
DOM์ ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๋
ธ๋์ ์์ ๊ด๊ณ๋ฅผ ๋งบ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ฐ ๋
ธ๋๋ ์์(element), ์์ฑ(attribute) ๋ฑ์ ๋ํ๋ด๋ฉฐ, ๋ถ๋ชจ-์์ ๊ด๊ณ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋ฉ๋๋ค. JavaScript์ ๋ฅผ ํตํด `document` ๊ฐ์ฒด๋ฅผ ํตํด ์น ํ์ด์ง์ ์์์ ์ ๊ทผํ์ฌ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋
ธ๋๋ฅผ ์ฝ๊ณ ์กฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์น ํ์ด์ง๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง๋ฉฐ, JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง์ ์์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์์ต๋๋ค.
keyword : ์น ํ์ด์ง์ ๊ตฌ์กฐ, ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค, ์์๊ด๊ณ, ์์, ์์ฑ, js์ documnet ๊ฐ์ฒด
2. DOM๊ณผ Virtual DOM์ ์ฐจ์ด๋?
DOM: ์ค์ ๋ธ๋ผ์ฐ์ , ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋๋ง๋ค ๋ธ๋ผ์ฐ์ ๋ DOM์ ๋ค์ ๋ ๋๋งํฉ๋๋ค. ์ด ๊ณผ์ ์ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค.
Virtual DOM: ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ DOM์ ๊ฐ๋ฒผ์ด ์ฌ๋ณธ์
๋๋ค. ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํ๋ฉด, Virtual DOM์ ๋จผ์ ์ ์ฉ๋๊ณ , ์ต์ข
์ ์ผ๋ก ์ค์ DOM๊ณผ ๋น๊ตํ์ฌ ์ค์ ๋ก ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์ค์ DOM์ ์ ์ฉํฉ๋๋ค. ์ด ๊ณผ์ ์ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
3. ๋๊ธฐ(Synchronous)์ ๋น๋๊ธฐ(Asynchronous)๋?
๋๊ธฐ: ์์
์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ํ ์์
์ด ๋๋์ผ ๋ค์ ์์
์ ์์ํ ์ ์์ต๋๋ค. ์์
์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ: ์ฌ๋ฌ ์์
์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋์ ์์
์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค์ ์์
์ ์์ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋คํธ์ํฌ ์์ฒญ, ํ์ผ I/O์ ๊ฐ์ด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์
์ ์ฒ๋ฆฌํ ๋ ์ ์ฉํฉ๋๋ค.
4. ์ปค์คํ
ํ
(Custom Hooks)๊ณผ ์ผ๋ฐ ํ
(Hooks)์ ์ฐจ์ด๋?
์ผ๋ฐ ํ
: React์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ํ
์
๋๋ค. ์๋ฅผ ๋ค์ด, `useState`, `useEffect` ๊ฐ์ ํ
๋ค์ด ์์ต๋๋ค. ์ด๋ค์ React ๊ธฐ๋ฅ์ ํจ์ ์ปดํฌ๋ํธ ๋ด์์ ์ฌ์ฉํ ์ ์๊ฒ ํด ์ค๋๋ค.
์ปค์คํ
ํ
: ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋๋ ํ
์
๋๋ค. ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ก์ง์ ์ปค์คํ
ํ
์ผ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ปค์คํ
ํ
์ ์ผ๋ฐ ํ
์ ๋ด๋ถ์์ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
โป์ปค์คํ
ํ
์ ์์ ๊ณ ๋ คํ ์ , ๊ท์น
1. ์ด๋ฆ: ์ปค์คํ
ํ
์ ์ด๋ฆ์ use ์ ๋์ฌ๋ก ์์ํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ, React๊ฐ ํด๋น ํจ์๋ฅผ ํ
์ผ๋ก ์ธ์ํ ์ ์์ต๋๋ค.
2. ๋ก์ง ๋ถ๋ฆฌ: ์ปค์คํ
ํ
์ ๋ง๋ค ๋๋ ๋ก์ง์ ๊ฐ๋ฅํ ํ ์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋ก์จ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ฐ๋
์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
3. ์์กด์ฑ ๊ด๋ฆฌ: ์ปค์คํ
ํ
๋ด์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ํ์ ํจ๊ณผ๋ ์์กด์ฑ ๋ฐฐ์ด์ ๋ช
์์ ์ผ๋ก ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด React๊ฐ ํด๋น ํ
์ ์์กด์ฑ์ ์ถ์ ํ์ฌ ์ ์ ํ ์๊ธฐ์ ํ
์ ์ฌ์คํํ ์ ์์ต๋๋ค.
5. Promise๋? (์ฝ๋ฐฑํจ์์ ์ฐ๊ด์ง์ด์)
Promise๋ ๋น๋๊ธฐ ์์
์ ์ต์ข
์๋ฃ(๋๋ ์คํจ) ๋ฐ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด์
๋๋ค. ์ฝ๋ฐฑ ํจ์์ ์ฝ๋ฐฑ ์ง์ฅ์ผ๋ก๋ถํฐ ๋ฒ์ด๋๊ฒ ํด ์ฃผ๋ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค. Promise๋ `.then()`, `.catch()`, `.finally()` ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์
์ ์ฑ๊ณต, ์คํจ, ์๋ฃ ํ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์์ต๋๋ค.
(Then์ฒด์ธ ์ค๋ช
์ด ํ์)
keyword : ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ๊ฐ, ๊ฐ์ฒด, ์ฝ๋ฐฑํจ์, ์ฝ๋ฐฑ์ง์ฅ
5.1 ์ฝ๋ฐํจ์๋ ๋ฌด์์ธ๊ฐ
์ฝ๋ฐฑ ํจ์๋ ํจ์๋ฅผ ๋ค๋ฅธ ํจ์์๊ฒ ์ธ์๋ก ์ ๋ฌ ๋์ด ํน์ ์ํฉ์ด๋ ์กฐ๊ฑด์ ๋๋ฌ ํ๋ฉด ํธ์ถ, ์คํ๋๋ ํจ์์ด๋ค. ์ฆ, ์ฝ๋ฐฑ ํจ์๋ ๋ค๋ฅธ ํจ์์๊ฒ ์์
์ ์์กดํ๊ณ , ๊ทธ ์์
์ด ์๋ฃ๋์์ ๋ ํด๋น ํจ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ค๋๋ค.
6. async์ await๋?
`async`์ `await`๋ ๋น๋๊ธฐ ์์
์ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํด ์ฃผ๋ JavaScript์ ๋ฌธ๋ฒ์ ์คํ(syntactic sugar)์
๋๋ค. `async` ํจ์๋ ํญ์ Promise๋ฅผ ๋ฐํํ๋ฉฐ, ํจ์ ๋ด์์ `await` ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. await๋ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ค์ ํจ์์ ์คํ์ ์ผ์ ์ค์งํ๊ณ , Promise์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ ์ฝ๋์ฒ๋ผ ์ฝ๊ณ ์ธ ์ ์๊ฒ ๋ฉ๋๋ค. await๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ, Promies์ .then() ์ฒด์ธ์ ์ฌ์ฉํ๋ ๋์ , ๋ณด๋ค ๋ช
ํํ๊ณ ์ง๊ด์ ์ธ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํด์ง๋๋ค. ํ์ง๋ง, await๋ฅผ ์ฌ์ฉํ ๋๋ ํด๋น ์ฝ๋๋ฅผ try-catch ๋ธ๋ก์ผ๋ก ๊ฐ์ธ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ, ๋น๋๊ธฐ ์์
์ค ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์ ์ ํ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
keyword : ๋น๋๊ธฐ ์์ ์ ๋ ์ฝ๊ฒ ์์ฑ, async๋ Promise๋ฅผ ๋ฐํ, await๋ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ค์ ํจ์์ ์คํ ๊ธฐ๋ค๋ฆผ, ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ ์ฝ๋์ฒ๋ผ ์ฝ๊ณ ์ธ ์ ์๋ค.
'๐ ๏ธ๊ธฐ์ ๋๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
API๋ ๋ฌด์์ธ๊ฐ (0) | 2024.03.13 |
---|---|
setTimeout์ ์ ๋น๋๊ธฐ์ธ๊ฐ? (0) | 2024.03.13 |
์ฝ๋ฐฑ ํจ์ (0) | 2024.03.13 |
ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2024.01.12 |