2024-02-29.md
๐กDIL: ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ ๋ค์ด๋ธ, 0์ฃผ์ฐจ-1
์คํฐ๋: ์๊ฐ CS, https://github.com/monthly-cs/2024-03-modern-react-deep-dive
์ค๋ ์งํ: ์คํฐ๋ OT
์๊ฐ ๋ฐ ์์น: 2024๋ 2์ 29์ผ 8์~8์ 20๋ถ, ๋์ค์ฝ๋
DIL-week0-1_2024-02-29
| DIL ์ฃผ์ฐจ | ๋ฒ์ | ๋ด์ฉ | ์ค๋์ฐจ ์ง๋ | | -------- | ------ | ------------------------------ | ----------- | | 0์ฃผ์ฐจ | 1, 2์ฅ | ๋ฆฌ์กํธ ํต์ฌ์์์ ์๋ฐ์คํฌ๋ฆฝํธ | ~19p |
์ค๋ ์ฝ์ ๋ด์ฉ์ markdown์ผ๋ก ๊ฐ๋จํ ๋ฉ๋ชจ
ebook ๊ตฌ๋งค ํ "๋ค์ด๊ฐ๋ฉฐ"๊น์ง ์ฝ์(1~19p)
์ฝ์ ์๊ฐ: 10์ 15๋ถ~12์ 5๋ถ
์๋ฌธ
- CRA๋ ์ฌ์ค์ ๋ => Next.js Remix
- ์ฑ ์์๋ React 17~18 ๋น๊ต, NextJS๋ 13.4๊น์ง
- 2018 ๊ธฐ์ ์ผ๋ก JQuery๋ฅผ ์ญ์
- ๋ฉํ์ ์ง์
๋ช ์์ ์ํ ๋ณ๊ฒฝ
- React๋ ๋จ๋ฐฉํฅ ๋ฐ์ธ๋ฉ๋ง ์ง์ <-> Angular ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ
- React์ ๋ช
์์ ์ํ ๋ณ๊ฒฝ?
setName()
์ฒ๋ผ "๋ช ์์ "์ผ๋ก ํธ์ถ๋ ์ํ ๋ณ๊ฒฝ์ ์ ์ฐพ์ ์ ์๋ค. - ๊ฐ๋จํจ๊ณผ ์ ์ฐ์ฑ (like recoil)
- ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ฝ๊ธฐ ์ฌ์ (๋น๊ต์ ๋ณํ๊ฐ ๋จ์ํ๊ธฐ ๋๋ฌธ)
- React์ ๋ช
์์ ์ํ ๋ณ๊ฒฝ?
JSX, JavaScript XML
- Angular๋ string template์ ์ฌ์ฉ ex) ngIf ๋ฑ์ ์ ์ฉ ๋ฌธ๋ฒ
- React๋ HTML, JS ๋ฌธ๋ฒ์ ๋ช ๊ฐ์ง ํน์ง์ ๊ฐ๋ฏธํ ์์ค
- ์ด๊ธฐ ์ดํด๊ฐ ์ฝ๋ค. ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํจ
- ์ฑ๋ฅ ์ต์ ํ ๋ฑ, ํ๋ ์์ํฌ์ ๊น์ ์ดํด์๋ ์๋์ ์ผ๋ก ๋์ด๋๊ฐ ์๋ ํธ(Vue, Svelte์ ๋น๊ต)
์ญ์ฌ
- 2010๋
์ด์
- LAMP ์คํ (Linux, Apache, MySQL, PHP)
- MPA, HTML ํ์ด์ง๋ฅผ ์๋์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ FE
- IE 8: ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ๋ฑ์ฅ
- JQuery: js ๋น๊ณต์ ํ์ค์ผ๋ก ์๋ฆฌ ์ก๊ธฐ ์์, ํ๋ฌ๊ทธ์ธ ๋ค์
- 2011๋
: WebSocket, Canvas, SVG, Geolocation, ES5
- ์ ๊ทน์ ์ผ๋ก DOM ์์ , Ajax๋ก Client ์๋ฒ ํต์ ์์
- AngularJS์ CoffeeScript, Backbone.js๊ฐ ๋ฑ์ฅ (MVVM, MVC ํจํด)
- ํ์ด์ค๋ถ์ ์ํฉ
- 2011๋ ์ ์ฒ์ ํ์ด์ค๋ถ ํ์๋ผ์ธ ์๊น
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ์ค์ด๊ณ ์ ํ์ผ๋, ์ค์๊ฐ์ฑ์ด ๊ฐ์กฐ๋ ๊ธฐ๋ฅ๊ณผ MPA์ ๋๋ ทํ ํ๊ณ๊ฐ ์์
- ํ์ด์ค๋ถ์ <์คํ๋ฅดํ ํ๋ก์ ํธ>
- ์ ํ์ ๊ฐ๋ ฅํ iOS ์ฑ ๊ท์
- HTML5๋ก ํ์ด๋ธ๋ฆฌ๋ ํ์ด์ค๋ถ ์ฑ์ ๋ง๋ค๊ณ ์ ํจ
- ํ๋ก์ ํธ ์คํจ: ๋ค์ดํฐ๋ธ ์ฑ์ด ํจ์ฌ ๋น ๋ฅด๊ณ ์์ ์ , => 18๊ฐ์ ๋์ ์ฌ๊ฐ๋ฐ
BoltJS
- ํ์ด์ค๋ถ์ ์๋ก์ด ํ๋ ์์ํฌ ๊ตฌ์ถ ์๋
- ๊นํ๋ธ ์์ค์ฝ๋์ ๊ณต๊ฐ์ ์ญ์
- FBolt, Functional Bolt => ํจ์ํ์ ์งํฅํ๋ Bolt
- ๊ธฐ์กด ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ๊ตฌ์กฐ์ ๋ฌธ์ ์
- ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ ๋ฐ์ ๊ด๊ณ
- ๋ณ๊ฒฝ๋ DOM ์ถ์ ์ด ์ด๋ ต๊ณ , ๋ง์ ๋ฒ๊ทธ ๋ฐ์
- FBolt์์ ์๊ฐ์ ์ป์ ๊ฐ์ ๋ฐฉํฅ: DOM์ ์๋ก ๋๋๋ง
ํ์ด์ค๋ถ์ ๋์, ์์ React
- ๋ฆฌ์กํธ ์ฒซ ํ๋ก์ ํธ: ๋๊ธ/๊ณต์ ๋ฒํผ์ด ์๋ UFI, Universal Feedback Interface๋ฅผ ๊ตฌํ (์ฆ๊ฐ์ ๋ฐ์ ์๋, ๋ชจ๋ ํฌ์คํธ์ ์กด์ฌ)
- JSX ๊ตฌ๋ฌธ๊ณผ Flux ํจํด
- ํ์ด์ค๋ถ์ด ์ธ์คํ๊ทธ๋จ์ ์ธ์: ๋ฆฌ์กํธ๋ก ๊ฐ๋ฐ ์์
- JSConf US 2013์์ React์ JSX๋ฅผ ๊ณต๊ฐ~! ์คํ์์ค!
๋น์ ํ์์ ์ธ ์๊ฒฌ๊ณผ ๋นํ
- SoC ์์น์ ์๋ฐฐ๋์ด ๋ณด์ธ๋ค => ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ
- ๊ธฐ์กด: HTML, CSS, JS
- React: ์ญํ ์ ๋ฐ๋ฅธ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ
- ์๋ก์ด ๋ฌธ๋ฒ๊ณผ ๊ด์ ์ ์ ๋ฌํ ๋ฐฉ๋ฒ ๋ชจ์
๋น๋น ๋ฆฌ์กํธ
- ์คํ์์ค ์ปจํธ๋ฆฌ๋ทฐํฐ! => ์ธ๋ถ ๊ฐ๋ฐ์, ์๋๋ ฅ, ์ปค๋ฎค๋ํฐ
- ์ปค๋ฎค๋ํฐ ์์์ง๋ฅผ ์ฌ๋ฆผ: ํ์ด์ค๋ถ ํ ๋ฐ์์ ์ผ์ด๋๋ ๋ฆฌ์กํธ ๊ธ ๊ณต์ /ํ ์ธํฐ๋ทฐ
- Using React to speed up the Khan Academy question editor
- ์ต์ด ๋ฆฌ์กํธ ์ธ๋ถ ํ๋ก์ ํธ
- ๋ฆฌ์กํธ์ ์ ์ธ์ ์ธํฐํ์ด์ค๋ก (1)์ปดํฌ๋ํธ ํธ๋ฆฌ ๊ฐ๋จ์์ฑ, (2)์ปดํฌ๋ํธ ๋๋๋ง ํ์์ฑ ๊ฒฐ์ , (3)ํ์ํ ์์ญ DOM ๋ณ๊ฒฝ
- Why did we build React?
- ๋ฆฌ์กํธ ๊ฐ๋ฐ์๊ฐ ์์ฑ
- ์ด๋ฏธ ํ MVC ํ๋ ์์ํฌ๊ฐ ์์์๋ React๋ฅผ ๊ฐ๋ฐํ ์ด์
- ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ํ๋ด๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
- The Future of JavaScript MVC Framework
- shouldComponentUpdate๋ฅผ ํ์ฉ, ๋ถํ์ํ ๋๋๋ง ์๋ต์ด ์ฃผ๋ ์ฑ๋ฅ์ ์ด์ , MVC ํจํด๋ณด๋ค -> ๋ฆฌ์กํธ ๋์ธ ์๊ฒฌ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ฅ: ์ปค๋ฎค๋ํฐ์ ์ง์ง๋ฅผ ๋ฐ์ผ๋ฉฐ ์ฑ์ฅํ๋ค.
- ์ํ ๊ด๋ฆฌ, ๋ผ์ฐํฐ, ์๋ฒ ์ฌ์ด๋ ๋๋๋ง
- ๋ฆฌ์กํธ๋ฅผ ์ฑํ
- ์ผํ! ๋ฉ์ผ: C++, HTML => PHP, JS => React, Flux
- ๋ทํ๋ฆญ์ค(30์ผ ๋์ ๋ฆฌ์กํธ์ ๋ฐฑ๋ณธ์ผ๋ก ํ๋กํ ํ์
์ ๋ง๋ ํ ๊ฒฐ์ )
- ์ฝ๋ ์ค์, ์๋งํ ํ์ต ๊ณก์ , ๋น ๋ฅธ ๊ธฐ๋ฅ ์ถ๊ฐ
- 2015๋ 6์์ ๋ฆฌ์กํธ๋ก ์ ์ํ ํํ์ด์ง ๊ณต๊ฐ
ํ์ฌ์ ๋ฏธ๋
- ๋ฆฌ์กํธ ๋ฒ์
- 2013๋ 5์: ์ต์ด ๊ณต๊ฐ, 0.3.0
- 0.14.7 ์ดํ์ => 15.0.0์ผ๋ก ๋ฒ์ ์ (์ค์๊ฐ ์๋๊น?)
- 1.0.0~15.0.0 ์ฌ์ด ๋ฒ์ ์ด ์์ง๋ง, semantic versioning ํ๊ณ ์์
- Angular, Vue์ ๋ฌ๋ฆฌ "์น ๊ฐ๋ฐ"์ ์ํ ํ๋ ์์ํฌ๋ฅผ ์งํฅํ์ง ์์ผ๋ฏ๋ก, ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
- ๊ตญ๋ด IT
- ํ ์ค / slash ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์นด์นด์ค
- ๋ค์ด๋ฒ์ PC ๋ฉ์ธ, ์ง๋ ๋ฉ์ธ
์์ด๊ณต๋ถ
e.g. (Latin)exempli gratia, ์์
i.e. (Latin)id est, ๋ค์ ๋งํ์๋ฉด