Lighthouse๋ ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ์น ํ์ด์ง ํ์ง ๊ฐ์ ์ ์ํ ์คํ ์์ค์ด๋ค. ์ค์ ๋ด๊ฐ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ๋ฅผ light houseํด๋ก ์ฑ๋ฅ ๋ถ์ํ์ ๋์ ํ๋ฉด์ ์บก์ณํด์๋ค. npm run build ๋ช ๋ น์ด๋ก ๊ฒฝ๋ํ๋ js ํ์ผ๋ก ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ถ์ํ์ ๋
๋ค์ด๊ฐ๊ธฐ์ React์ Typescript๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ์ , ์ ๋ก์ด๋์ sleact ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด๊ฐ ์๊ฐ๋ณด๋ค ๊ธฐ์ด๊ฐ ๋ง์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๊ทธ๋์ CRA๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ ๊ณผ์ ์์์ ๋ด๊ฐ ์๊ฒ ๋ ๊ฒ๋ค์ ์ ๋ฆฌํ๊ณ
ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ์ด๋ป๊ฒ ํด์ผ ํด๋ฆฐํ๊ฒ ์งค ์ ์๋ ์ง ๊ณ ๋ฏผ์ด ๋ง์๋ค. ๊ทธ๋์ ์ฌ๋ฌ ๋ธ๋ก๊ทธ ๊ธ์ ์ฐพ์๋ณด๋ฉฐ ๊ณต๋ถ๋ฅผ ํ๋ค๊ฐ ํ ์ค์์ ๋์จ ์์์ ๋ณด๊ณ ์ ๋ฆฌ๋ฅผ ํด๋ณธ๋ค. ์ฌ์ค ์์์ ๋ณด๋ฉด ์ดํด๋ ๊ฐ๋๋ฐ, ์ค์ ๋ด ์ฝ๋์ ์ ์ฉํ๋ ์ผ์ ์ฝ์ง ์์ ๊ฒ๊ฐ๋ค. ๊ทธ๋๋ ๋์ค์ ๊ฒฝ๋ ฅ์ด ์
1. CSR๊ณผ SSR 1) CSR CSR(ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง)์ ๋ธ๋ผ์ฐ์ ์์ JavaScript๋ฅผ ํตํด ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ์ >1. ๊ป๋ฐ๊ธฐ ๋ฟ์ธ html ํ์ผ์ ๋ค์ด๋ก๋ bundle.js ๋ค์ด๋ก๋ ๋ฐ ์คํ ์ถ๊ฐ ๋ฐ์ดํฐ(users.json)๋ฅผ ๋ค์ด๋ก๋ํ์ฌ
๋๋ 22๋ ๋์ ์ฝ 8๊ฐ์ ๋์ ์ค์๊ธฐ์ ์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก ์ผํ ์ ์ด ์๋ค. ํ๊ต์์ ์งํํ๋ ํ์ฅ์ค์ต ํ๋ก๊ทธ๋จ์ด ์๋๋ฐ ์ง์์ ํ๊ฒ ๋์๊ณ ์ด์ด ์ข๊ฒ ํฉ๊ฒฉ๋์ด ์ผํ๊ฒ ๋์๋ค. ์ฒ์์ ํฉ๊ฒฉํ์ ๋๋ ๋ฌด์ฒ์ด๋ ๊ธฐ๋ปค๋ค. ๊ทธ๋ฅ ์ด๋ ฅ์ ๊ฒฝํ์ฌํญ์ ํ ์ค ์ฑ์ธ ์ ์๊ฒ ๋
useMemo๋ ํน์ ๊ฒฐ๊ณผ๊ฐ์ ์ฌ์ฌ์ฉ ํ ๋ ์ฌ์ฉํ๋ ๋ฐ๋ฉด, useCallback์ ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ค.์ฒซ ๋ฒ์งธ ์ธ์์๋ํจ์๋ฅผ, ๋ ๋ฒ์งธ ์ธ์์๋ ์์กด์ฑ ๋ฐฐ์ด(deps)์ ์ ๋ฌํ๋ค. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์์ ํจ์๊ฐ ์ ์ธ๋์ด์์ ๋ ์ด
ํด๋ก์ ๋ ์ค์ฒฉ๋ ํจ์๋ฅผ ์ด์ฉํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ ์คํ ์ปจํ ์คํธ๊ฐ ๋๋๋ ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ. ์ฃผ์ํด์ผํ ์ : ๋ฉ๋ชจ๋ฆฌ ๋์ํธ์ด์คํ ์ ๋ณ์๋ ํจ์ ์ ์ธ์ด ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ ค์ง ๊ฒ ๊ฐ์ ํ์, ์ ์ธ ์ด์ ์ ๋ณ์๋ ํจ์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ์ค๋ฅ๊ฐ ๋์ง ์
๊ต์ฅํ ์ค๋๋ง์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ํ๊ฒ ๋์๋ค. ๊ฑฐ์ 3์ฃผ๋ผ๋ ์๊ฐ๋์ ํ๋ก์ ํธ์ ๋ชฐ๋ํ๊ธฐ ๋๋ฌธ์, ๋ธ๋ก๊ทธ๋ฅผ ์ฐ์ง ๋ชปํ๋ค. ํ๋ก์ ํธ ๊ธฐ๊ฐ๋์ ๊ฒช์ ๋ฌธ์ ๋ ํด๊ฒฐ๋ฐฉ์์ ์ฐจ์ฐจ ๋ธ๋ก๊ทธ์ ํฌ์คํ ํ ์์ ์ด๋ค. ์ค๋์ ๋ฉ์ฌ ์๊ฐ์ ๋ฉด์ ์ค๋น ๊ฐ์ ๋ค์ ๊ฒ์ ์ ๋ฆฌ ํด๋ณด์๋ค. ๋ฉ์ฌ ํ
์ ์ญ์ํ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, ํน์ ์ปดํฌ๋ํธ์์์ state ๋ณํ๋ฅผ ๋ค๋ฅธ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ๋ฌ์ฐจ๋ก props๋ฅผ ์ ๋ฌํด์ผํจ (์ด๋ฅผ props drilling ์ด๋ผ๊ณ ๋ถ๋ฆ)context๋ฅผ ์ด์ฉํ๋ฉด ๋จ๊ณ๋ง๋ค ์ผ์ผ์ด props๋ฅผ ๋๊ฒจ์ฃผ์ง ์๊ณ ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ
๋ค์ด๊ฐ๊ธฐ์ , ๋ณดํต ์ ์ญ์ํ๋ฅผ ๊ด๋ฆฌํ ๋๋ useContext ํ ์ ์ฐ๊ธฐ๋ณด๋ค๋ Recoil์ ์ผ์๊ณ , ์ํ ๊ฐ์ ๊ฒฝ์ฐ๋ useReducer ํ ๋์ ์ useState๋ฅผ ๋ง์ด ์ ํํด์ ์ผ์๋ค. ์ ํํ ๋ ํฐ ์ด์ ๋ ์์๋ค(๊ทธ๋ฅ ๋ง์ด ์จ๋ดค๋ ๊ฒ ์ผ์ ๋ฟ..) ๊ทธ๋์ ์ด๋ฒ์
1) useState์ lazy initialization https://yceffort.kr/2020/10/IIFE-on-use-state-of-react
Render: DOM Tree ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๊ฐ ์๋ฆฌ๋จผํธ์ ์คํ์ผ ์์ฑ์ ๊ณ์ฐํ๋ ๊ณผ์ (Render ์์ฒด๊ฐ ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ, Virtual Dom์ ๊ทธ๋ฆผ์ผ๋ก์จ ์ด๋ค ๋ถ๋ถ์ ๋ฐ๊ฟ์ผํ ์ง ๊ณ์ฐํ๋ ๊ณผ์ ์)Paint: ์ค์ ์คํฌ๋ฆฐ์ Layout์ ํ์ํ๊ณ
useMemo์์ memo๋ memoization์ ๋ปํ๋๋ฐ ์ด๋ ๊ทธ๋๋ก ํด์ํ๋ฉด โ๋ฉ๋ชจ๋ฆฌ์ ๋ฃ๊ธฐโ๋ผ๋ ์๋ฏธ์ด๋ฉฐ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํจ์ผ๋ก์จ ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ
์ ์๋ useState, useEffect๋ก ๊ฑฐ์ 99ํ๋ก์ ์ฝ๋ฉ์ ํ์์ง๋ง, ์ด์ ๋ ์กฐ๊ธ ๋ฌ๋ผ์ ธ์ผํ์ง ์์๊น ํ์ฌ useRef, useMemo, useLayoutEffect ๋ฑ์ ํ ๋ค์ ์ ๋ฆฌํ๋ ํฌ์คํธ๋ฅผ ์์ฑํ๊ฒ ๋์๋ค. useRef ํจ์๋ current ์์ฑ์ ๊ฐ์ง
JSX๋ JavaScript XML์ ์ฝ์๋ก, ๋ฆฌ์กํธ์์ ์ฌ์ฉํ๋ ํน์ํ ๋ฌธ๋ฒ. JSX๋ HTML๊ณผ ๋งค์ฐ ์ ์ฌํ์ง๋ง ์์ฐํ ๋ค๋ฅธ ์ธ์ด์ด๋ฉฐ, JavaScript ์ฝ๋์์ ๋ง์น HTML์ ์ฌ์ฉํด UI์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ฒ ๊ฐ์ ํธ๋ฆฌํ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณต๋ชจ๋ ํ๋กํผํฐ ์ด๋ฆ์ ์นด
ํด๋ก์ ๋ ์ด๋ค ํจ์A์์ ์ ์ธํ ๋ณ์a๋ฅผ ์ฐธ์กฐํ๋ ๋ด๋ถํจ์B๋ฅผ ์ธ๋ถ๋ก ์ ๋ฌํ ๊ฒฝ์ฐ A์ ์คํ ์ปจํ ์คํธ๊ฐ ์ข ๋ฃ๋ ์ดํ์๋ ๋ณ์a๊ฐ ์ฌ๋ผ์ง์ง ์๋ ํ์๊ณ ์ฐจํจ์ : ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋ ๋๋ ํจ์๋ฅผ ๋ฐํํจ์ผ๋ก์จ ์๋ ํ๋ ํจ์์ ๋ณด์๋: ์ด๋ค ๋ชจ๋์ ๋ด๋ถ๋ก์ง์ ๋ํด ์ธ๋ถ๋ก์
ํด๋ก์ ๋ ํจ์์ ๊ทธ ํจ์๊ฐ ์ ์ธ๋ ๋น์์ lexical environment์ ์ํธ๊ด๊ณ์ ๋ฐ๋ฅธ ํ์EnvironmentReference(ER): ์๋ณ์์ ๋ํ ์ ๋ณดOuterEnvironmentReference(์ธ๋ถ์ ๋ณด): ํ์ฌ ํธ์ถ๋ ํจ์๊ฐ ์ ์ธ๋ ๋น์์ Lexcial
1. async, await 1) async, await์ด๋? async์ await๋ ๊ฐ์ฅ ์ต๊ทผ์ ๋์จ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจํด์ผ๋ก, ๊ธฐ์กด์ ์ฝ๋ฐฑํจ์์ ํ๋ก๋ฏธ์ค ์ ๋จ์ ์ ๋ณด์ํ ๋ฌธ๋ฒ 2) Promise ์์ ๋ฅผ ํตํด ์์๋ณด๋ Promise๋ฌธ๋ฒ์ ๋จ์ Promise์์
1. Node.js 1) ๋ ธ๋JS๋ ๋ฐํ์์ ์ ๊ณต ๋ ธ๋JS๋ ํฌ๋กฌ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ธ V8์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ปดํ์ผ ํ ์ ์๋ ํ๊ฒฝ์ธ ๋ฐํ์์ ์ ๊ณต 2) ๋ฐํ์ ํ๊ฒฝ? ๋ฐํ์ํ๊ฒฝ: ์ปดํจํฐ๊ฐ ํ์ฌ ์คํ์ค์ธ OS์ ๋ณ๊ฐ๋ก ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ ์
1) [attribute] 2) [attribute="value"] ์์ฑ๊ฐ์ "value"๋ง ์๋ ์์ ์ ํ ์) [class="apple"] 3) [attribute~="value"] ์์ฑ๊ฐ์ผ๋ก "value"๋ฅผ ๊ฐ์ง ์์ ์ ํ ์ฌ๋ฌ๊ฐ์ ์์ฑ๊ฐ์ ๊ฐ์ก๋คํด๋ "