Closed JengYoung closed 1 year ago
์ด์ ๋๋์ด ๋๋ง์ ๋ธ๋ก-๊ทธ๋ฃน์ UI์ ์ผ๋ก CRUDํ๋ ์์ ์ ๋ค์ด๊ฐ๋ค. ํต์ฌ์ ํผ๊ทธ๋ง์ฒ๋ผ, ๋๋๊ทธ๋ฅผ ํตํด ํ ํ๋ฆฟ์ ๋ํ CRUD ๋ก์ง์ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๋ค.
๋ค๋ง ์ด ์์ ์ ๊ฒฝ์ฐ, ๊ฝค๋ ๋ง์ ์์ ์์ค์ฝ๋๊ฐ ๋์ฌ ์ ์์์ ์ ๋ฒ #67 ์์ ํ์ธํ๋ค. (์ฝ 3500์ค...) ๋ฐ๋ผ์ ์์ฑ ์์ ๋ง ์ฐ์ ์ ์ผ๋ก ๋ง๋ค์ด ๋ณธ๋ค.
Main
crosshair
๊ทธ๋ฌํ๋ค. ํผ๊ทธ๋ง์ฒ๋ผ ํ๋ ๋ก์ง์ ์๊ฐํ๋ฉด ๋๋ค.
๊ฒฐ๊ตญ ์ผ๋ จ์ ์ถ๊ฐ/์์ฑ ์์ ์ ํ ๋ฒ์ ์ง์ํ๊ธฐ๋ก ๋ฐฑ์๋ ์ธก๊ณผ ์ฝ์ํ ์ํ์ด๋ค. ์ง๊ธ 2๊ฐ์ง์ ๊ฐ๋ฅ์ฑ์ ๊ฒํ ์ค์ด๋ค.
TaskQueue
IndexedDB
TaskQueue๋ฅผ ํ ๊ฒ์์ ์๋ช ํ๋, ์ด๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ง๊ฐ ๊ณ ๋ฏผ ์ค์ด๋ค. ์์ปจ๋ ๊ทธ๋ฅ Queue ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ต์ ํํ ๋ถ๋ถ์ด ์กด์ฌํ์ง ์๋ ๊ณ ๋ฏผ ์ค์ด๋ค.
Queue
raw
์ด๋ฌํ ๊ณ ๋ฏผ์ ์น ์คํ ๋ฆฌ์ง ํ์์ ๋ํด์๋ ๋์ค๊ณ ์๋ค. ์์ปจ๋ ํ์ฌ ์ด๋ฐ ๊ณ ๋ฏผ๋ค์ด ์๋ค.
LocalStorage
Cache API
๋๋๋ฆฌ๊ธฐ ๋ฑ์ ์ฌ๋ฌ ๋ก์ง๊ฐ์ ์ํธ์์ฉ์ ๊ณ ๋ คํ ๋ ๊ฐ์ฅ ์ง๊ด์ ์ธ Queue ํ์์ ํ์คํฌ ํ๋ฅผ ์ฌ์ฉํ๋ค. ์ด์ ๋, ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๊ณผ์ฐ ์ผ๋ง๋ ๋ ์ง ๋ชจ๋ฅด๋ ์ํฉ์์ ์ธ๋งํฌ์ด์ ๋ชจ๋ํฐ์ฒ๋ผ ์ข ๋ ๋ณ๋ ฌ์ ์ธ ํ๋ก์ธ์ค ์ฒ๋ฆฌ๋ฅผ ์ํ ๋๊ธฐํ ๋ก์ง์ ์ค๋ฒ์ค๋ฝ๋ค๋ ์๊ฐ์ด ๋ค์๊ธฐ ๋๋ฌธ์ด๋ค. (๋ฌผ๋ก ๋ง๋๋ ๊ฑด ๋ด๊ฒ ๊ฝค๋ ๊ท์คํ ๊ฒฝํ์ด ๋๊ฒ ์ง๋ง, ์์ ์ ์ธ ์ฝ๋๊ฐ ์ฐ์ ์ด๋ค.)
๋ค๋ง ์ด๋ฌํ ๋ฐฉ์์ ๋ค์ 3๊ฐ์ง ๋ฌธ์ ์ ์ ๊ฐ๊ณ ์๋ค.
์ผ๋จ ์ ์๋ DOM ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์คํ ์ด์ ์ถ๊ฐํ๋ ํจ์๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ํ์๊ฐ ๋ฌธ์ ์ด๊ณ , ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ฌธ์ ๋ ์ต์ ํ๋ ํ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ๊ฒ์ธ์ง๊ฐ ๋ ๊ฒ์ด๋ค.
๐๐ป ์ต์ ํ๋ ํ๋ computed๋๋ ํ์์ผ๋ก ๊ตฌ์ถ
์ด์ฐจํผ ๋๋๋ฆฌ๊ธฐ ๋ฑ์ด ์ผ์ด๋๋ฉด ๋ฐ๋์ ํ์์ ํ ๋ฒ ์ฐ์ฐ์ ์ํํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ถ๊ฐ์ ์ธ ๋ก์ง๋ค์ ๋ณต์กํ๊ฒ ํด์ผ ํ๊ณ , ์ด๋ ์ ์์ ์ ์ง๋ณด์์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. (ex: delete๋ฅผ ํ๋ค๊ฐ ๋ค์ ๋๋๋ฆฌ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ด๋ป๊ฒ ๋๋ ค ๋๋ ์์ ์ต์ ํํ ์ง?)
O(N)์ผ๋ก ์ผ๋จ ์ต์ ํ๋ ํ๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ์ด๋ ํด๋น ํค(id)๊ฐ ์์์ ์๊ธฐ ์ํ ์คํ ์ด๋ฅผ Map์ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด๋ธ๋ค. ์กฐํํ ๋๋ง๋ค ์๋ค๋ฉด ํด๋น ํค๊ฐ ์์นํ ์ธ๋ฑ์ค ์ชฝ์์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด O(N)์ผ๋ก ๋ฌ์ฑ ๊ฐ๋ฅํ๋ค.
id
Map
์ฆ ์ด ๋ก์ง์ O(N)๋ง์ผ๋ก๋ ๋ชจ๋ ๋ณ๊ฒฝ ๋ก์ง์ ์ํํ ์ ์๋ ๊ฒ์ด๋ค.
์๊ฐํด๋ณด๋ ๋ฉ์ง ์์ ๊ณณ์ ๊ฐ์ฅ ์๋ฒฝํ ํด๋ต์ด ์กด์ฌํ๋ค. React์ ์ค๋ ์ท ํํ์ ๋ก์ง์ ์ด์ฉํ๋ฉด ์ ์ด๋ถํฐ ํธํ์ง ์์์๊น ์ถ๋ค.
React
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ์ DOM ํํ๋ก ์ด์ฐ๋์๋ ๋ง๋ค์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ํํ๋ Store์ ๊ทธ๋๋ก ๊ตฌํ๋์ด ์๋ค.
๋ฐ๋ผ์ ์คํ ์ด์์ ๊ฐ Block/Group๋ค์ ์ด๊ธฐ์ ๊ฐ๊ณผ Diffingํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด๋ด๋ฉด ๋๋ ๊ฑฐ์๋ค! ๊ทธ๋ฌ๋ฉด ์๋ฌด๋ฆฌ ๋ก์ง์ด ๋ณต์กํด์ง๋๋ผ๋ ๊ฐ๋จํด์ง๋ค.
๊ฒฐ๊ณผ ์ฐ์ฐ ์ญ์ O(N)์ด๊ฒ ๋ค.
No response
๋ฉ์ถฐ! ๐๐ป ์ ์ ์ฒดํฌ ๋ค์ด๊ฐ๋๋ค~
๋ฐฐ๊ฒฝ ๋ฐ ์ค๋ช
์ด์ ๋๋์ด ๋๋ง์ ๋ธ๋ก-๊ทธ๋ฃน์ UI์ ์ผ๋ก CRUDํ๋ ์์ ์ ๋ค์ด๊ฐ๋ค. ํต์ฌ์ ํผ๊ทธ๋ง์ฒ๋ผ, ๋๋๊ทธ๋ฅผ ํตํด ํ ํ๋ฆฟ์ ๋ํ CRUD ๋ก์ง์ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๋ค.
๋ค๋ง ์ด ์์ ์ ๊ฒฝ์ฐ, ๊ฝค๋ ๋ง์ ์์ ์์ค์ฝ๋๊ฐ ๋์ฌ ์ ์์์ ์ ๋ฒ #67 ์์ ํ์ธํ๋ค. (์ฝ 3500์ค...) ๋ฐ๋ผ์ ์์ฑ ์์ ๋ง ์ฐ์ ์ ์ผ๋ก ๋ง๋ค์ด ๋ณธ๋ค.
๊ธฐ๋๊ฒฐ๊ณผ
Main
์์์๋crosshair
๋ชจ์์ ์ปค์๊ฐ ๋์ด์ผ ํ๋ค.crosshair
๋ชจ์์ธ ์ํ์์Main
์์ ์ปดํฌ๋ํธ๋ฅผ ๊ทธ๋ฆด ์ ์์ด์ผ ํ๋ค.๋์ ์ ์
๊ทธ๋ฌํ๋ค. ํผ๊ทธ๋ง์ฒ๋ผ ํ๋ ๋ก์ง์ ์๊ฐํ๋ฉด ๋๋ค.
ํ ์ํฉ - ๋์ ๊ฒํ ์ค
๊ฒฐ๊ตญ ์ผ๋ จ์ ์ถ๊ฐ/์์ฑ ์์ ์ ํ ๋ฒ์ ์ง์ํ๊ธฐ๋ก ๋ฐฑ์๋ ์ธก๊ณผ ์ฝ์ํ ์ํ์ด๋ค. ์ง๊ธ 2๊ฐ์ง์ ๊ฐ๋ฅ์ฑ์ ๊ฒํ ์ค์ด๋ค.
TaskQueue
๋์ - ํํ๋ ์ด๋ค ์์ผ๋ก?IndexedDB
๋์ - ์ ์ฅ ์น ์คํ ๋ฆฌ์ง๋ ์ด๋ค ๊ฒ์ผ๋ก?TaskQueue
TaskQueue
๋ฅผ ํ ๊ฒ์์ ์๋ช ํ๋, ์ด๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ง๊ฐ ๊ณ ๋ฏผ ์ค์ด๋ค. ์์ปจ๋ ๊ทธ๋ฅQueue
๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ต์ ํํ ๋ถ๋ถ์ด ์กด์ฌํ์ง ์๋ ๊ณ ๋ฏผ ์ค์ด๋ค.Queue
๊ฐ ์๋ฒ์ ์ ์ฅ๋๋ ์๊ฐ์,raw
ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ๋ณด๋ค๋ ์์ถ์ ํ๋ ๊ฒ ๋ ์ข์ง ์์๊น? ์์ปจ๋ ์์ฑ-์ถ๊ฐ-์ญ์ ๋ฅผ ๋ชจ๋ ํ๋ค๋ฉด ์ ์ด๋ถํฐ ์ปดํฌ๋ํธ๊ฐ ์๋ ๊ฒ์ด๋ ์์ฒญ์ ๋ณด๋ด์ง ์์๋ ๋๋ค.IndexedDB
์ด๋ฌํ ๊ณ ๋ฏผ์ ์น ์คํ ๋ฆฌ์ง ํ์์ ๋ํด์๋ ๋์ค๊ณ ์๋ค. ์์ปจ๋ ํ์ฌ ์ด๋ฐ ๊ณ ๋ฏผ๋ค์ด ์๋ค.
Queue
์ ๋๋๋ค๊ณ ์น์. ๊ทธ๋ฐ๋ฐ ์ด๊ฑฐ, ์๋ก ๊ณ ์นจํ๋ฉด ์์ด์ง์ง ์๋?IndexedDB
์LocalStorage
์ธ๋ฐ(Cache API
๋ PWA๊ฐ ์๋๋ฉฐ, ์๋ต API๊ฐ ์ฃผ ์บ์ฑ ๊ด์ฌ์ฌ์ด๋ฏ๋ก ์ผ๋จ ๋ ผ์ธ๋ก ์น๋ค.) ์ด๋ค ๊ฒ ๋์๊น?LocalStorage
๋ ์ฉ๋ ์ ํ์ด ์์ง ์๋? ๊ทธ๋ฌ๋ฉดIndexedDB
๊ฐ ๋ซ์ง ์๋?๊ณ ๋ฏผ ๋์ ๋ด๋ฆฐ ํด๋ต (230205, 15:00, ์ต์ข ๊ฒฐ๊ณผ ์๋!)
TaskQueue
๋๋๋ฆฌ๊ธฐ ๋ฑ์ ์ฌ๋ฌ ๋ก์ง๊ฐ์ ์ํธ์์ฉ์ ๊ณ ๋ คํ ๋ ๊ฐ์ฅ ์ง๊ด์ ์ธ Queue ํ์์ ํ์คํฌ ํ๋ฅผ ์ฌ์ฉํ๋ค. ์ด์ ๋, ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๊ณผ์ฐ ์ผ๋ง๋ ๋ ์ง ๋ชจ๋ฅด๋ ์ํฉ์์ ์ธ๋งํฌ์ด์ ๋ชจ๋ํฐ์ฒ๋ผ ์ข ๋ ๋ณ๋ ฌ์ ์ธ ํ๋ก์ธ์ค ์ฒ๋ฆฌ๋ฅผ ์ํ ๋๊ธฐํ ๋ก์ง์ ์ค๋ฒ์ค๋ฝ๋ค๋ ์๊ฐ์ด ๋ค์๊ธฐ ๋๋ฌธ์ด๋ค. (๋ฌผ๋ก ๋ง๋๋ ๊ฑด ๋ด๊ฒ ๊ฝค๋ ๊ท์คํ ๊ฒฝํ์ด ๋๊ฒ ์ง๋ง, ์์ ์ ์ธ ์ฝ๋๊ฐ ์ฐ์ ์ด๋ค.)
๋ค๋ง ์ด๋ฌํ ๋ฐฉ์์ ๋ค์ 3๊ฐ์ง ๋ฌธ์ ์ ์ ๊ฐ๊ณ ์๋ค.
์ผ๋จ ์ ์๋ DOM ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์คํ ์ด์ ์ถ๊ฐํ๋ ํจ์๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ํ์๊ฐ ๋ฌธ์ ์ด๊ณ , ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ฌธ์ ๋ ์ต์ ํ๋ ํ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ๊ฒ์ธ์ง๊ฐ ๋ ๊ฒ์ด๋ค.
๐๐ป ์ต์ ํ๋ ํ๋ computed๋๋ ํ์์ผ๋ก ๊ตฌ์ถ
์ด์ฐจํผ ๋๋๋ฆฌ๊ธฐ ๋ฑ์ด ์ผ์ด๋๋ฉด ๋ฐ๋์ ํ์์ ํ ๋ฒ ์ฐ์ฐ์ ์ํํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ถ๊ฐ์ ์ธ ๋ก์ง๋ค์ ๋ณต์กํ๊ฒ ํด์ผ ํ๊ณ , ์ด๋ ์ ์์ ์ ์ง๋ณด์์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. (ex: delete๋ฅผ ํ๋ค๊ฐ ๋ค์ ๋๋๋ฆฌ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ด๋ป๊ฒ ๋๋ ค ๋๋ ์์ ์ต์ ํํ ์ง?)
O(N)์ผ๋ก ์ผ๋จ ์ต์ ํ๋ ํ๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ์ด๋ ํด๋น ํค(
id
)๊ฐ ์์์ ์๊ธฐ ์ํ ์คํ ์ด๋ฅผMap
์ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด๋ธ๋ค. ์กฐํํ ๋๋ง๋ค ์๋ค๋ฉด ํด๋น ํค๊ฐ ์์นํ ์ธ๋ฑ์ค ์ชฝ์์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด O(N)์ผ๋ก ๋ฌ์ฑ ๊ฐ๋ฅํ๋ค.์ฆ ์ด ๋ก์ง์ O(N)๋ง์ผ๋ก๋ ๋ชจ๋ ๋ณ๊ฒฝ ๋ก์ง์ ์ํํ ์ ์๋ ๊ฒ์ด๋ค.
์ถ๊ฐ ๊ณ ๋ฏผ ํ์ ๋ด๋ฆฐ ํด๋ต
TaskQueue - ๊ตณ์ด ๋ด๊ฐ ์ต์ ํ๋ ํ๋ฅผ ๋ง๋ค ํ์๊ฐ ์์๋?
์๊ฐํด๋ณด๋ ๋ฉ์ง ์์ ๊ณณ์ ๊ฐ์ฅ ์๋ฒฝํ ํด๋ต์ด ์กด์ฌํ๋ค.
React
์ ์ค๋ ์ท ํํ์ ๋ก์ง์ ์ด์ฉํ๋ฉด ์ ์ด๋ถํฐ ํธํ์ง ์์์๊น ์ถ๋ค.๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ์ DOM ํํ๋ก ์ด์ฐ๋์๋ ๋ง๋ค์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ํํ๋ Store์ ๊ทธ๋๋ก ๊ตฌํ๋์ด ์๋ค.
๋ฐ๋ผ์ ์คํ ์ด์์ ๊ฐ Block/Group๋ค์ ์ด๊ธฐ์ ๊ฐ๊ณผ Diffingํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด๋ด๋ฉด ๋๋ ๊ฑฐ์๋ค! ๊ทธ๋ฌ๋ฉด ์๋ฌด๋ฆฌ ๋ก์ง์ด ๋ณต์กํด์ง๋๋ผ๋ ๊ฐ๋จํด์ง๋ค.
๊ฒฐ๊ณผ ์ฐ์ฐ ์ญ์ O(N)์ด๊ฒ ๋ค.
์ฐธ๊ณ ์๋ฃ
No response