๐ฏ ๊ทธ๋์ ๊ณต๋ถํ ๊ฒ
- [JavaScript] ์คํ ์ปจํ ์คํธ
- [JavaScript] ์ปดํฌ๋ํธ ๋ฐฉ์์ผ๋ก localStorage๋ฅผ ์ด์ฉํ todoapp ๊ตฌํ ๋ณต์ต
- [JavaScript] Client Side์์ ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ, ES6 Module, ๋น๋๊ธฐ ๋ณต์ต
- [์ฝ๋ ๋ฆฌ๋ทฐ] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ reduce ํจ์๋ก ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ ์๊ฐํด๋ณด๊ธฐ
- [ํน๊ฐ] ์ธ๋์คํธ๋ฆฟ ๊ธฐ์ ์คํ์ ๋ํด์: Jamstack(Javascript, APIs, Markup), Next.js, Vercel, Strapi, GraphQL + APOLLO
- [ํน๊ฐ] ๋ ๋๋ง์ ์ญ์ฌ: Server Template -> Client Side Rendering -> Server Side Rendering -> Static Site Generator -> Incremental Site Regeneration
- [๋ฉํ ๋ง] ๋์์ธ ์์คํ , ํ์ ์์ UI ๊ตฌํํ๋ ๋ฐฉ์
๐ ๋ ๊ณต๋ถํด์ผ ํ ๊ฒ
- ์คํ ์ปจํ ์คํธ ES6 ๋ฒ์
- ์น ์ ๊ทผ์ฑ
- localstorage ๊ฐ์ ์ซ์๋ฅผ ์์๋ก ๋ฃ์์ ๋ ์๋ฌ ์ฒ๋ฆฌ๊ฐ ์๋๋ ๊ฒฝ์ฐ ํด๊ฒฐ
- ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์์ ๋ถ๋ฌ์ค๋ todoapp ์ง์ ๊ตฌํ: XMLHttpRequest ๋ฐฉ์ -> Promise ๋ฐฉ์ -> async, await ๋ฐฉ์
- Strapi, GraphQL ๊ณต๋ถํด๋ณด๊ธฐ
๐ Reflection
- ํ ์ฃผ ๋์ ํ ๊ฒ ์ ๋ง ๋ง์๋๋ฐ TIL ์ฐ๋ ์๊ฐ์ ๊ณต๋ถ๋ ํ ์ ๋ ํ์๋ ๋ง์์ผ๋ก TIL์ ๋ชป์ผ๋ค.
- ์ ๋ฒ ์ฃผ์ ๋๋ฌด ์ฌ์ ๋ถ๋ฆฌ๋ฉด์ ๋นก์ธ๊ฒ ์ง๋๋ฅผ ์ ๋๊ฐ๋ฐ๋ค ์ด๋ฒ ์ฃผ๋ ๋๋ฌด ์ค๋ ์ค๋ ๊ณต๋ถํด์ ์ง๊ธ ์์ฒญ ๋ฐ๋ ค์๋ ์ํ๋ค... ๋ ธ์ ํด๋ก๋ ํ๋ก์ ํธ ๋ค์ด๊ฐ๋๋ฐ ๋๋ ์์ง๋ todoapp ๊ณผ์ ๋ ์ปค๋ ์์ ๋ณต์ตํ๊ตฌ ์์...
- ์ปดํฌ๋ํธ ๋ฐฉ์์ผ๋ก todoapp ๊ตฌํํ๋ ์์ ๋ณต์ตํ๋๋ฐ ์ ๋ฒ์ ๋ค์์ ๋๋ ๊ทธ๋ฅ ๋ฐ๋ผ์น๊ธฐ๋ง ํด์ ์ฌ์ค ์ดํด๊ฐ ์๋๋ค. ๊ฐ์๋ฅผ ํ๋ฒ ๋ค์ ๋ฃ๊ณ ๋์ ์ง์ ๊ตฌํํ๋๋ฐ ์ญ์ ํ๋ฒ์ ๋์๊ฐ์ง ์์๋ค. ๊ทธ๋๋ ๊ตฌํ์ ์ง์ ํด๋ณด๊ณ ์๋ฌ์ ๋ถ๋ชํ๋ณด๋๊น ์ปดํฌ๋ํธ๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํด์ผํ๋์ง ์ดํด๊ฐ ๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋๋, DOM ์์๋ถํฐ ๋ง๋ค๊ณ , target์ ์์ฑํ DOM ์์๋ฅผ append ์์ผ์ฃผ๊ณ , this.render์ ๋งํฌ์ ๊ตฌํํ๊ณ ์ด๋ฒคํธ ์์ผ๋ฉด ๊ฑธ์ด์ฃผ๊ณ (์ด๋ ํ๋ฒ๋ง ์คํ๋๋ฉด ๋๋ ๊ฒ๋ค์ ๋ฐฉ์ด์ฝ๋๋ก ๊ฐ์ธ์ค์ผ ํ๋ค), ์ํ๊ฐ์ this.state์ ์ ์ํด์ฃผ๊ณ , ์ํ๊ฐ ๋ณ๊ฒฝ์ด ํ์ํ๋ฉด this.setState์ nextState๋ฅผ ์ธ์๋ก ๋ฃ์ด์ ํธ์ถํ๋ฉด ์ํ๊ฐ ๋ณ๊ฒฝํ๊ณ ๋ค์ ๋ ๋๋ ์ ์๊ฒ๋ ์ฝ๋๋ฅผ ์ค๊ณํด์ผํ๋ค. ๋, ๋ค๋ฅธ ์ปดํฌ๋ํธ ๊ฐ์ ์ ์ดํ๋ ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด์ค์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ ๊ฐ์ ์์กด์ฑ์ ์ค์ด๊ธฐ ์ํด parameter์ ์ด๋ฒคํธ ์ฝ๋ฐฑํจ์๋ฅผ ์ ๋ฌํ ์ ์๊ฒ๋ ํด์ค์ผ ํ๋ค.
- localStorage๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ๊ตฌํํ ๋๋ storage ํ์ผ์ ๋ฐ๋ก ๋ง๋ค์ด ํ ํ์ผ์ getItem, setItem api๋ฅผ ๊ตฌํํ๋๋ฐ module exportํ๊ณ ์ธ ๋๋ import๋ง ํด์ค๋ฉด ๋๋๊น ๋๊ฒ ๊น๋ํ๊ณ ์ข์๋ณด์๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ธฐํ๋ ๊ฒ ์๋ค. ๋ด๊ฐ ๋ง์ฝ storage ํ์ผ์ ์ด๋ค ๋ณ์๋ฅผ ์ง์ ํ๋๋ฐ ์ด๊ฑด export ํ์ง ์์๋ค. ๋ด๊ฐ exportํ getItem ํจ์์์ ์ด ๋ณ์๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ด๊ฐ ๋ค๋ฅธ ํ์ผ์์ getItem ํจ์๋ง import ํด์๋๋ฐ๋ ๋ฌธ์ ์์ด storage ํ์ผ์ ์๋ export ํ์ง ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ผ. ์๋ฆฌ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๊ธฐํ๋ค.
- localStorage๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด getItem, setItem์ ๊ตฌํํ ๋๋ ๊ฐ์ด ์๊ฑฐ๋ json parse ๋ถ๊ฐ๋ฅํ ๊ฐ์ด ์์ ๋๋ฅผ ๋๋นํด์ try catch๋ฌธ์ผ๋ก ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋ค. ์์๋ก string ๊ฐ์ ๋ฃ์ ๋๋ ์ ์กํ๋๋ฐ ํ ์คํธ๋ก number ๊ฐ์ ๋ฃ์ผ๋๊น map์ ๋๋ฆฌ๋ ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋ฌ๋ค. json ๋ฐฉ์์ด ์๋ string์ json parse๋ฅผ ํ๋ฉด ์๋ฌ๊ฐ ๋์ catch๋ก ์ก์ ์๊ฐ ์๋๋ฐ stringํ๋ number(ex. "123")๋ json parse๋ฅผ ํด๋ ์๋ฌ๊ฐ ์ ๋๋ค... ๋ ์๊ธด ๊ฑด ์๋ string์ธ๋ฐ json parse๋ฅผ ํ๋ฉด number๊ฐ ๋๋ค!! ๋ชฐ๋๋ ์ฌ์ค์ธ๋ฐ ์๋ฌ ์ฒ๋ฆฌ ํด์ฃผ๋ ค๊ณ ์ด๋ ๊ฒ ์ ๋ ๊ฒ ํด๋ดค๋๋ฐ ์ ์๋๋ค. ์ฐ์ ๋ค์ ์ง๋๋ฅผ ๋๊ฐ๊ณ ๋์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ณผ์ ๊ตฌํํ ๋ ์์ ํด๋ด์ผ๊ฒ ๋ค.
- fetch๋ axios๋ ๋๋ฌด ์ผ๋ ๋ฒ๋ ์จ์์ด์ ๋น๋๊ธฐ ํต์ ๋ถ๋ถ์ ๊ธฐ์ด๋ถํฐ ํํํ ์ก๊ณ ์ถ๋ค. ๊ทธ๋์ ์๊ฐ์ด ์ข ๋ค๋๋ผ๋ ์ง์ ๊ตฌํํ๋ ์ฐ์ต์ ํด๋ณด๋ฉด์ ๋ณต์ตํ๋ ๊ฒ ์ข์๋ฏ
- ์์งํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ดํด ๋ชปํ๋๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ๋ ค๋๊น ์ ๋ง ๋ง๋งํ๋ค. ๊ทผ๋ฐ ๋ค๋ฅธ ์ฌ๋๋ค ์ฝ๋ ๋ฆฌ๋ทฐํ ๊ฑธ ๋ณธ ๊ฒ ๋๊ฒ ๋์์ด ๋ง์ด ๋๋ค. ๋ค๋ฅธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ค์ ๋ณด๋ฉด์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์๋ reduce ํจ์๋ฅผ ์ ์ฌ์ฉํ๋ ๊ฒ, reduce ํจ์์ ์ผ๋ก ๊ตฌํํ๋ ๊ฒ ์ค์ํ๋ค๋ ๊ฑธ ๋ฐฐ์ ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณต์ ์ํ ์ง์์ด๋ผ๋ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ ๋๋ ์ดํฐ, ์ดํฐ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ช ๋ นํ๋งํผ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ์์ง ๊ฐ ๊ธธ์ด ๋จผ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ ์๋ํ๋ฉด์ ๋ง์ด ๋ฐฐ์ ๋ค. (์๊ฐ์ด ์์ฒญ ๋ง์ด ๋ค์์ง๋ง...)
- ์ธ๋์คํธ๋ฆฟ ๊ธฐ์ ์คํ์ ๋ํ ํน๊ฐ์ ๋ค์ผ๋ฉด์ ์์ฆ ํธ๋ ๋ ๊ธฐ์ ๋ค์ ๋ํด ๊ท๋๋ฅํ ์ ์์ด์ ์ ๋ง ์ ์ตํ๊ณ ์ฌ๋ฐ์๋ค. SSG ํน์ ISR๋ ํ์ผ์ Vercel์ ์ด์ฉํ๋ฉด ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ๊ณ CDN ์ฒ๋ฆฌ๊น์ง ํ ์ ์๋ค๋๋ฐ ๋ค์์ ํ๋ก์ ํธ ํ ๋ ์จ๋ณด๊ณ ์ถ๋ค. ์ด๋๋ฏผ ํ์ด์ง๋ฅผ ํตํด ๋ชจ๋ธ์ ์์ฑํ๊ณ REST ๊ธฐ๋ฐ api๋ฅผ ๋ง๋ค ์ ์๋ strapi๋ ์์ฒญ ์ ์ฉํด๋ณด์๋ค. GraphQL์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๋์์ ์ ์ํ๋ ๋ฐฉ์์ REST์ ๋ฌ๋ฆฌ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๋ ๋ฐฉ์์ API ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ธ ๊ฒ ๊ฐ๋ค. ๊ทผ๋ฐ GraphQL๋ก Redux๋ฅผ ๋์ฒดํ๋ ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค ๊ทธ๋์ ๋ ์ฉ์ด ๋๋ค. GraphQL์ด๋ ๋ฌด์์ผ๊น... ๊ถ๊ธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ฉํ ๋์ด ์น ์ ๊ทผ์ฑ์ ๋ํ ์ค์์ฑ์ ๊ฐ์กฐํ์ ์ ๋ค์๊ธ ์น ์ ๊ทผ์ฑ์ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์์ง๊ฐ ๋์ด์๋ฌ๋ค. lighthouse๋ฅผ ํตํด ์ฌ์ดํธ ์ฑ๋ฅ์ ์ธก์ ํ ์ ์๋ค๋ ๊ฒ๋ ์๋ ค์ฃผ์ จ๋ค. ์น ์ ๊ทผ์ฑ๋ ์ง์๊ฐ ๋์์ ์ ๊ธฐํ๋ค.
- ์ด๋ฒ ๋ฉํ ๋ง์ ์ ํ์ฌํญ์ธ๋ฐ ๋ฉํ ๋์ด ์์ฒญ ์์ฒญ ๋ฐ์ ์์ค์๋ ์๊ฐ์ ๋ด์ฃผ์ ์ ๋ฉํ ๋งํด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํ๋ค ใ ใ ๋ด๊ฐ ์์์ผ์ ์๊ฐ์ด ์๋๋ค๊ณ ํ๋๊น ๋ชฉ์์ผ๋ก ์๊ฐ๊น์ง ๋ฐ๊ฟ์ฃผ์ จ๋ค ใ ใ ๋ฉํ ๋์ด ๋ง๋ค๊ณ ์๋ ์๋น์ค์ ๋์์ธ ์์คํ ์ ์ง์ ๋ณด์ฌ์ฃผ์๋ฉด์ ํ์ ์์ ๋์์ธ ์์คํ ์ ์ด๋ป๊ฒ ์ด์ฉํ๊ณ ์๋์ง, ๋์์ธ ์์คํ ์ ์ด๋ป๊ฒ ์ค๊ณ๋์ด ์๋์ง ์๋ ค์ฃผ์ จ๋๋ฐ ์ง์ง ์ ์ตํ๊ณ ์ฌ๋ฐ์๋ค. ์น ์ ๊ทผ์ฑ์ ํ์ ์์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง์ ๋ํ ๊ถ๊ธ์ฆ๋ ํ์๋ค.
- ์ค๋ ์์นจ์ ๋ฐฑ์ ๋ง์ผ๋ฌ ๊ฐ์ ์ฃผ๋ง ๋ด๋ด ๊ณจ๊ณจ๋๊น๋ด ์ด์ ๊น์ง ๊ณผ์ ๋ฅผ ๋ค ๊ตฌํํ๊ณ ์ถ์๋๋ฐ ์คํจํ๋ค. ๋ณ ์ ์์ง, ๋ญ. ์ํ๋ฉด... ํ์ด๋ ๋ ๋จน์ด ๊ฐ๋ฉด์ ์ค๋๋ ์ด์ฌํ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค ^^(ใ ใ )
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WIL] 4์ฃผ์ฐจ ํ๊ณ (0) | 2021.08.30 |
---|---|
[TIL] 20210828 (2) | 2021.08.29 |
[WIL] 20210820 3์ฃผ์ฐจ ํ๊ณ (8) | 2021.08.20 |
[TIL] 20210819 (0) | 2021.08.20 |
[TIL] 20210816 (0) | 2021.08.16 |