2021.11.22 ~ 2022.03.10 (580H)
์๋ฒ๋ ์ปดํจํฐ๋ค!client ์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ Server!์ ๊ณต์ ์ญํ ์ ํ๋ ์ปดํจํฐ์ปดํจํฐ๋ฅผ ์ ๊ณต์๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จclient ์ชฝ ๊ฐ๋ฐ - Front-end!server ์ชฝ ๊ฐ๋ฐ - Back-end!๋ค์ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์กด์ฌํ๋ค.์ฌ๋ฌ๊ฐ์ง ๋ธ๋ผ์ฐ์ ์
git ์ค์ git config --listํ์ธgit config --global --unset user.nameuser.name ์ ๋ค์ ์ค์ git config --global --user.name "user.name"git config --global --user.e
git ์ ์ฅ์ ์๋ จํ๊ธฐ์ํ ๊ณผ์ !github flow practicegithub flow๋ก ํ๋ก์ ํธ๋ฅผ ์ํํด๋ด ์๋ค์ฃผ์ : ์์ด๋น์๋น์ฒด ๊ตฌํํ๊ธฐTasks์ง์ ์คํํด๋ณด๊ณ ๋์ ์๋ฆฌ ํ์ ํ๊ธฐ์๊ณ ๋ฆฌ์ฆ ๊ตฌํํ๊ธฐ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํํ ํ์ด์ง ๊ตฌํํ๊ธฐgithub flow๋ก ๊ธฐ๋ฅ ๋จ
Part02 ์น ์ฌ์ดํธ ๋ผ๋ ๋ง๋ค๊ธฐ 01. HTML ๋งํฌ์ ์ธ์ด๋ Programing Language - ๊ธฐ๊ณ๋ฅผ ๋์ํ๊ฒ ์ง์ํ๋ ์ธ์ด Markup Language - ํ์๊ณผ ์ ์ฐจ์ ๋ง์ถฐ ํ์์ ๋ง๊ฒ ์์ฑํ๋ ์ธ์ด What You See What You Get (
Cascade Style Sheet (CSS)HTML : ๊ฐ์ ธ๋ค ๋๊ณ CSS : ๊พธ๋ฏธ๊ณ Javascript : ์ํจ๋ค.์ค๊ณ๋ HTML๋ก & ๋์์ธ์ CSS๋ก
git ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ๊ฐ๋ฐํ๊ธฐ TIL Today I Learnd! github ์๋๋ฐญ ๊ด๋ฆฌ ์ํ๊ธฐ github blog ๊ด๋ฆฌ ํ๊ธฐ ( hexo ) vim repo ์ญ์ > rm -rf reponame/ branch ์ญ์ > git branch -D ๋ธ๋ ์น๋ช
width, height: ๋์ด์ ๋๋น๋จ์px => ์ ๋ ํฌ๊ธฐ : ๋ชจ๋ํฐ์์ ํ์ % => ์๋ ํฌ๊ธฐ : ๋ฐ๋ก์ ๋ถ๋ชจ์ ํฌ๊ธฐ์ ๋น๋กmargin : 20px 15px 20px 15px;: ๋ฐ๊นฅ์ชฝ ์ฌ๋ฐฑpadding: ์์ชฝ ์ฌ๋ฐฑborder : 1px solid black;:
Part04 JAVASCRIPT 01. Javascript์์ ์ฒซ ๋ง๋จ
04.Javascript ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ for ๋ฌธ
HTML TIP inline ์์ ํน์ง ์์ผ๋ก ์ํํ๊ฒ ์์ธ๋ค. `` ๊ธ์ ์์๋ width, height ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ธ์ ์์๋ margin padding์ ์์๋๋ ์ฌ์ฉํ ์ ์๊ณ ์ข์ฐ๋ง ์ฌ์ฉํ ์ ์๋ค. ์ธ๋ผ์ธ ์์ ์์๋ ๋ธ๋ญ ์์๋ฅผ ์ฌ์ฉํ
background-image: url("");: ์ด๋ฏธ์ง ์ฝ์ background-attachment: scroll;: ์คํฌ๋กค ์์ฑparallax(ํ๋ด๋ ์ค) :background-attachment: fixed;: ๋ฐฐ๊ฒฝ์ ๊ทธ๋๋ก ์๊ณ ์์๋ง ์์ง์ฌ ๋ฐฐ๊ฒฝ์ ๋ถ๋ถ๋ถ๋ถ ๋ณด์ฌ์ง
๊ฒ์ ์์ง ์ต์ ํ ( SEO : Search Engine Optimization ) ์นํ์ด์ง๊ฐ ์์ ๋ฏธ๋์ด(ํ์ด์ค๋ถ ๋ฑ)๋ก ๊ณต์ ๋ ๋ ์ฐ์ ์ ์ผ๋ก ํ์ฉ๋๋ ์ ๋ณด๋ฅผ ์ง์ . ์นํ์ด์ง๊ฐ ์์ ๋ฏธ๋์ด(ํธ์ํฐ)๋ก ๊ณต์ ๋ ๋ ์ฐ์ ์ ์ผ๋ก ํ์ฉ๋๋ ์ ๋ณด๋ฅผ ์ง์ . ์ฌ๋ฌ๊ฐ์ง ๋ธ๋ผ์ฐ์ ์
server.jsnode server.js ์ฃผ๋ก ์ ๋ชฉ, ๋ค๋น๊ฒ์ด์ ์ ํฌํจํ๊ณ ๋ก๊ณ , ๋ชฉ์ฐจ, ๊ฒ์ํผ์ ๊ทธ๋ฃนํ ํ ์ ์๋ค. ํ๋ฒ๋ง ์ฐ์ด์ง ์๊ณ section, article์์ ๊ทธ ์์ญ ๋ด header์์น์ ์ฐ์ธ๋ค. ํ์ด์ง๋ด์ ๊ฐ์ฅ ์ฃผ์ํ ๋ถ๋ถ์ ๊ทธ๋ฃนํํ ๋ ํ๋ฒ๋ง ์ฌ์ฉ
: class ์ด๋ฆ์ ์์ฑํ ๋ ์๋ฏธ๋ฅผ ๋๊ณ ๋ง๋ค์ด ์ค๋ณตํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์๋ช ๋ฒ. menu\_\_name: ์์\_\_์ผ๋ถ๋ถmenu\_\_content--์ํ: ์์\_\_์ผ๋ถ๋ถ--์ํ\_.throttle(function(){},300);: ๋ฐ๋ณต ์์
float ์ธต์ ๋์ฐ๊ธฐ! float: left;float ์ธต์ ๋์ฐ๊ณ ์๋์๋ ์ธ๋ผ์ธ์ด ์ฌ์ ์๊ธฐ ๋๋ฌธ์ ๊ธ์ด ์์ผ๋ก ํ๋ฅธ๋ค.float ์ธต์ผ๋ก ๋ ๋ฒ๋ฆฌ๋ฉด ๊ธฐ๋ณธํ๋ฆ ์ธต์ ๋๋จธ์ง๋ ํฌ๊ธฐ์ ๋ง์ถฐ ์กฐ์ ๋๋ค.ํฌ๊ธฐ์ ๋ง์ถ๊ธฐ์ํด ๋ค์ํ๋ฒ ๋๋ ํธ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๋๋ก ํ๋ค. ( BFC ์ฌ๊ณ
์ฌ๋ผ์ด๋์ฐฝ ๊ตฌํํ๊ธฐ Swiper > swiperjs.com : ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์ฌ์ฉํ๊ธฐ ์ํด ๋งํฌ๋ฅผ ๊ฑธ์ด์ค๋ค. : ์์ ์ฒ๋ผ ํด๋์ค๋ฅผ ์ค์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ํด๋์ค ์ค์ ํ์๋ js๋ก ๋์์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค. ์ฌ๋ฌ๊ฐ์ง ์ต์ ์ด ์๊ณ ์ฝ๊ฒ ์ฌ์ฉํ
Figma ( ๋์์ธ ํด ) > figma.com ๋์์ธ ํด ์ค ๋ง์ด ์ฐ์ด๋ figma ๋ฅผ ์ฌ์ฉํ๊ณ ์ตํ๋ณด์! ์ด์ ํ๋ก์ ํธ์์ ์ฌ์ฉํด ๋ณด์๊ธฐ ๋๋ฌธ์ ์ต์ํ๋ค! ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ํ๋ ๋ถ๋ถ์ ์ผ๋ก ์์ฑํ๊ณ ํฉ์ณ์ ์ฌ์ฉํ๋ ๋ฐฉ์. ์ฆ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฏ์ด ํ์ฌ ๋ณต์ฌ
ํ๋์ div์ 3๊ฐ์ ๋ฒํผ ๋ง๋ค์ด ๋ฃ๊ธฐwidth๋ฅผ ๊ฐ์ง ๋ฒํผ๊ทธ๋ฃน div๋ฅผ ๋ง๋ค๊ณ ๋ฒํผ๊ทธ๋ฃน์ธ div์ display:flex; ๋ฅผ ์ฃผ๊ณ flex-wrap: wrap;: ์ค์ด ๋์ด๊ฐ๋ฉด ์ค ๋ฐ๊ฟํ์ฌ ๋ฐฐ์นํจ.์ ์ค์ ํ๋ค.๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ 2๊ฐ๋ ์์ค์ ํ๊ฐ๋ ์๋ซ์ค์ ์ค๊ฒ
youtube iframe api์ฐ์ ์์์ ์ฌ์ํ ์์น์ id ๊ฐ player ์ธ div ์์๋ฅผ ์์ฑํ๋ค.youtube.js ํ์ผ์ ์๋กญ๊ฒ ๋ง๋ค๊ณ ๊ทธ ์์์ฝ๋๋ฅผ ์ ๋ ฅํด์ค๋ค.ํ๋ ์ด์ด ๋งค๊ฐ๋ณ์(https://developers.google.com/youtube/p
์์ ์ฃผ์ ๋ฉ๋ชจ๋ฆฌ ๊ด์ ์ jsjs DOM ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ณผ ์ ์๋ ํด ํ์ด์ง!ํ์ด์ฌ ํํฐ์ฌ๋ฌ๊ฐ์ง ์ธ์ด์ ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ณผ ์ ์๋ค.js : ์ธํฐํ๋ฆฌํฐ ์ธ์ด, ํ์ ๊ตฌ๋ถ์์ด ํ ๋นc : ์ปดํ์ผ ์ธ์ด, ํ์ ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ์ง์ js์ ํจ์๋ ๊ฐ์ฒด๋ค.์ ์ธ๋ ํจ์
A -> B -> C -> A -> B -> C -> A -> B -> C ๋ก ๋ง๋ค๊ธฐ ์ํดC'-> A -> B -> C -> A' ๋ก ์๋์ ํด๋ก ์ ๋ง๋ค์ด ๋๊ณ ์๋์ C' ํน์ A' ์ ๋์ฐฉํ๋ฉด ์๋๋งค์ด์ ์ ์ ๊น ๋๊ณ C ํน์ A ๋ก ๋ค์ ์ฎ๊ธด๋ค.insertBefore
String.prototype.indexOf('์์น๋ฅผ์ฐพ์๊ธ์');: ์ฐพ๋ ๊ธ์์ ์์น๋ฅผ ์ซ์๋ก ์๋ ค์ค. ์์ผ๋ฉฐ -1 ๋ฐํ.๋ฌธ์ ๋ฐ์ดํฐ์ prototype์ผ๋ก ์๋ ํจ์๋String.indexOf('๊ธ์');ํ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.let str = "hello worl
์ด๋ฏธ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ์์ฑ๋ช ์ผ๋ก ๋ถํดํ์ฌ๊ฐ์ฒด์์ ํ์ํ ๊ฐ๋ค๋ง์ ์ง์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด ์ค ์ ์๊ณ ๊ฐ์ฒด์ ๊ฐ์ด ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ฌด์ํ๊ณ ๊ฐ์ฒด์ ์๋ ๊ฐ์ด ํ ๋น๋๋ค.ํ ๋น ๋ฐ์ ๊ฐ์ ๋ณ์๋ช ์ : ์ ์ ๊ณ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ ์ ์๋ค.์ ๊ฐ ์ฐ
String, Number, Boolean, undefined, null , bigint , symbolObject, Array, Function์์ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ค.๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ง์ ๋ณ๊ฒฝํ ์ ์๋ค.๋ณ์์ ํ ๋นํ ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋ชจ
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ๊ธฐ.๊ธฐํ๋์์ธ๋งํฌ์ ์คํ์ผ๋ง์๋ฐ์คํฌ๋ฆฝํธ(์ ์๊ถ ๋ณดํธํ๊ธฐ์ํด ์ ๋ณด์ด์ง ์๊ฒ ํจ!)์ค๋น๋ ๊ธฐํ๊ณผ ๋์์ธ์ ์ฌ์ฉํ๋ค.๋์์ธ์ ๋งํฌ์ ์ ์ค๋นํ๊ธฐ์ํด ์กฐ์๋ค๊ณผ ํ์๋ฅผ ํตํด ํต์ผ ์ํค๊ณ ๊ฒฐ์ ํ์๋ค.ul์ ์ด๋๊น์ง ํ์ฉํด์ผํ๋๊ฐ์น์ ๊ทผ์ฑ์ ์ข๊ฒ ํ๊ธฐ ์ํด
๋ฏธ๋ฆฌ ์ก์๋์ ๋งํฌ์ ์ ํ ๋๋ก ์คํ์ผ๋ง๋ฐฐ์น์ ํธํ๊ฒ border๋ฅผ ๋ฃ์ด์ ์๋ณ๋ก ํ๊ธฐํ๋ฉฐ ๋ฐฐ์น๋ฅผ ์ก๋๋ค.border๋ผ์ธ์ ๋๊ป๊ฐ ๋ฐฐ์น์ ์ํฅ์ ์ฃผ๊ธฐ ๋๋ฌธ์box-sizing: border-box; ๋ก borer๋ฅผ ์์ผ๋ก ํฌํจ์ํจ๋ค.fetch ํจ์๋ฅผ ์ด์ฉํด json ๋ฐ์ด
4. ์คํ์ผ๋ง โ๐ฝ todo ์์ด์ฝ ๋ฐฐ์น native, nav ์์ฑ ์ ๊ธํต box ์ถ๊ฐ ๋์ ์ค์ ๋ ์ง ์ต์ ์ผ(->์ค๋)๊ณผ ๋๋ฒ์งธ์ผ(->์ด์ ) ๊ธ์ ๋ณ๊ฒฝ
๋งค๋ฒ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ํ์๋ฅผ ํตํด ํ์ฌ ์งํ์ฌํญ ๊ณต์ ํ ์์ผ๋ก ํด์ผํ ๊ฒ์ ๊ณต์ .( ๋ฏธ๋ฆฌ ๊ณต์ ์ฌํญ์ ์ ๋ฆฌํด์ ๊ธ๋ก ์ค๋นํด์ค๊ณ ๊ฐ๊ฐ ๋ฐํ์์ผ๋ก ๊ณต์ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.)\-> github issue page ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์์ฑ.๋ฌธ์ ์ ์ ์์๋ก ๊ณต์ .js
JS DATA ๋ด๋ณด๋ด๊ธฐ, ๊ฐ์ ธ์ค๊ธฐ Default export ๋ด๋ณด๋ด๊ธฐ > export default function test(num){console.log('test'+num+'๋ฒ')}; ํํ์ผ์ ํ๋ฒ๋ง ํ ์ ์๋ค. ๊ฐ์ ธ์ค๊ธฐ ๋ค๋ฅธ js ํ์ผ์์ ์ฌ์ฉํ๊ธฐ ์ด๋ฆ์
TypeScript programming language compiled language ( ์ ํต์ ์ compiled ๋ ์๋๋ค. ) transpile Compiled / Interpreted compiled ์ปดํ์ผ์ด ํ์ O ์ปดํ์ผ๋ฌ๊ฐ ํ์ O ์ปดํ์ผํ๋ ์์
์๋ณ ๊ด๋ฆฌ๋ฅผ ์ํด today month๋ฅผ ์ฐพ์ ํด๋นํ๋ ๋ฌ์ ํฌํจ๋๋ ์ง์ถ ๊ตฌํ๊ธฐ.์๋ณ ์ง์ถ๊ด๋ฆฌ ํ์ด์ง์์ ์ง์ ํ ์ฌ์ฉ๊ฐ๋ฅ ์ด์ก์ ํ์ํ๊ณ ์ ์ง์ถ๊ธ์ก๊ณผ ๊ณ์ฐํ์ฌ ํ์.๊ด๊ณ ์ ํ์ฌ ์์ก์ ํตํด ๊ด๊ณ ํ๊ธฐ. (+๋ฉด ํฌ์, -๋ฉด ๋์ถ ๊ด๊ณ )์ ๊ธํต์ ๋์ ๋ฃ์ผ๋ฉด ์์ก์ด ์ค๊ณ
: type์ ๋ง๋ค์ด๋ด๋ ๋ฐฉ์.type์ ์ ์ํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋์ด ์ค๊ณ ์ค๋ณต์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ํ๋ค.โญ๏ธ js ๋ก ์ปดํ์ผ์ ํ๋ฉดinterface ๋ฅผ ํตํด type์ ์ ์ํ ๋ถ๋ถ์ ๋ณด์ด์ง ์๋๋ค.: ์์ด๋ ์๊ด์๋ ํ๋กํผํฐ ๋ง๋ค๊ธฐ ( ? ): ํ๋กํผํฐ ๋ค์์ ๋ฃ๋
โญ๏ธ ์ด ํ์ด์ง๋ง ๋ณด๋ฉด vue์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ์์ฑํ๊ณ ์ ํ์๋ค!!์ฆ, JavaScript ๋ฅผ ๋ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ์์ฑํ์ฌ ์ด์ฉํ๊ณ ์ ๋ง๋ค์ด์ง js ์์ฑํด ๊ฐ์ ๊ฒ์ด๋ค.vue ๋ก ์์ ์ ํ๋ฉด js ๋ก ๋ฐ๊ฟ์ ์น์์ ๊ตฌ๋์ํจ๋ค.์ฐ์ ์ ์ผ๋ก js ๋ ๋์ํ
Classes constructor(๊ตฌ์กฐ) & initialize(์ด๊ธฐํ) strict ๋ชจ๋์์๋ ํ๋กํผํฐ๋ฅผ ์ ์ธํ๋ ๊ณณ ๋๋ ์์ฑ์์์ ๊ฐ์ ํ ๋นํด์ผ ํ๋ค. ํด๋์ค์ ํ๋กํผํฐ๊ฐ ์ ์๋์ด ์์ง๋ง, ๊ฐ์ ๋์ ํ์ง ์์ผ๋ฉด undefined ์ด๋ค. ์์ฑ์์๋ asyn
: CSS Preprocessor (CSS ์ ์ฒ๋ฆฌ๊ธฐ)main.scssparcel-bundler ํจํค์ง๋ฅผ ์ค์นํด๋๋ฉด sass ๋ฅผ ์ธ์งํ์ฌ ์๋์ผ๋ก ์ค์น!sass ๋ scss -> css ๋ก ๋ฐ๊ฟ์ค๋ค.๋ณธ๋ css ์ฃผ์์ ๋จ๋๋ค.// ์ฃผ์์ css๋ก ์ปดํ์ผ ๋์ง์๋๋ค.์์์
๊ตฌ์ฑdata ์ต์ ์ return ์ผ๋ก data๋ฅผ ์ ์ธํด์ค๋ค.methods ์ต์ ์ function์ ๋ง๋ค์ด ์คํ์ ์ค๋น์ํฌ ์ ์๋ค.( ์ด๋ฒคํธ ํธ๋ค๋ฌ )data๋ฅผ ๊ฐฑ์ ํ๋ฉด ํ๋ฉด์ ํํ๋๋๊ฒ๋ ๋ฐ๋๋ค. (Reactivity) ๋ฐ์์ฑ!v-์์ฑ ์ ๋๋ ํฐ๋ธ(Directive)
beforeCreated, created, mounted, updated, unmountedcreated, mounted ๋ฅผ ๋ง์ด ํ์ฉํ๋ค.created ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์งํ์ด๋ค.mounted ๋ html์ ์ฐ๊ฒฐ๋ ์งํ์ด๋ค.{{ msg }} ์ ๊ฐ์ด ์ฌ์ฉํ๋ค. v
๊ดํธ ์์ด ์ฌ์ฉํ๋ฉด ํจ์์ ์ธ์๋ event๊ฐ์ฒด๋ฅผ ๊ฐ๋๋ค.๊ดํธ ์์ ์ธ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ๋ ์ธ์๊ฐ ๋ค์ด์๋ค.์ธ์์ event ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ณ ์ถ์๋๋ $event ๋ฅผ ์ฌ์ฉํ๋ค.ํ๋์ ํ๊ทธ์ ์ฌ๋ฌ๊ฐ์ method๋ฅผ ํธ์ถํ๋๋ () ๋ฅผ ๊ผญ ๋ฃ์ด์ผํ๋ค.@click.pr
: ์ธ๋ถ ํจํค์ง ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ค์ .: ๊ตฌ์ฑ์ด ์๋ ๋จ์ํ ์๋ ๋ฒ๋ค๋ง์/์คํ ํ๋ก์ ํธ์ ์ ํฉ์๋์ผ๋ก dist์ ํ์ํ ํ์ผ์ copy ํ์ฌ ๋ฃ์ด์ฃผ๋ ํจํค์ง ์ฌ์ฉ!npm install -D parcel-plugin-static-files-copypackage.json์
A JavaScript library for building user interfaces.dom tree ๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์๊ณ component ๋ฅผ ๋ง๋ค์ด virtual DOM ์ ํตํด ์ฌ์ฉํ๋ค.DOM ์ ์ง์ ์ ์ดํ๋ ๊ฒฝ์ฐ : ๋ฐ๋ ๋ถ๋ถ๋ง ์ ํํ ๋ฐ๊ฟ์ผํ๋ค.DOM
React Hooks hooks ์ด์ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ๊ฐ ์๋ค๋ฉด? class ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ๊ฐ ์๋ค๋ฉด? ๋ผ์ดํ์ฌ์ดํด์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด? class ๋ผ์ดํ์ฌ์ดํด์ ๊ด๊ณ ์๋ค๋ฉด? function class component function comp
CRA, ESLint, Prettier, husky: git์ commit ํ๊ธฐ ์ ์ ์ ๊ฒ!npm i -D huskynpx husky installpackage.jsonnpx husky add .husky/pre-commit "link-staged"npm i lint-
์ ํต์ ์ผ๋ก ์๋ก์ด ํ์ด์ง๋ก ์ด๋ํ ๋ ํ์ด์ง ์ ๋ณด๋ฅผ url ์ฃผ์๋ฅผ ํตํด ์๋ฒ์ ์์ฒญํ๊ณ ์ ๋ฌ ๋ฐ์๋ค.But!SinglePageApplication ๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ ํ์๋ฒ์์ app ์ ์ฒด๋ฅผ ๋ฐ์์ค๊ณ client๊ฐ ํ์ํ ๋ถ๋ถ์ url ๋ณ๊ฒฝ์ ํตํด ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ฌ์ฉ
์ฃผ์ ๋ค์ ?key=value ๋ฅผ ์ ๋ ฅํ๋ ํ์์ queryString ์ด๋ผ๊ณ ํ๋ค.์ฌ์ฉ๋ฒ?name=mark๋ด์ฅ ํจ์ ์ฌ์ฉํ๊ธฐ.query-string npm์ผ๋ก ๋ฐ์์ ์ฌ์ฉํ๊ธฐnpm i query-string ์ฌ๋ฌ route ์ค ์์๋๋ก ๋จผ์ ๋ง๋ ํ๋๋ง ๋ณด์ฌ์ค๋ค.ex
npm i styled-componentsShadow DOMnpm i react-shadowํ์ ์ ์ผ๋ก css๋ฅผ ์ ์ฉํด ์ค ์ ์๊ณ ๋ค๋ฅธ ๊ณณ์์ ์ ์ดํ์ง ๋ชปํ๋๋ก ํ ์ ์๋ค.๋์์ธ ๋์ด์๋ component ์ฌ์ฉํ๊ธฐ!npm i antdindex.js ์ antd.css
: Higher Order Component ( ๊ณ ์ฐจ ์ปดํฌ๋ํธ )HOC = function(์ปดํฌ๋ํธ) { return ์๋ก์ด ์ปดํฌ๋ํธ;}์ปดํฌ๋ํธ๋ฅผ ๋ฐ์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌํดํ๋ ํจ์ ์ด๋ค.withRouter(์ปดํฌ๋ํธ) -> router์ ์ํด ํธ์ถ๋์ง ์์๋ matc
ํตํฉํ ์คํธ์ ๋นํด ๋น ๋ฅด๊ณ ์ฝ๋คํตํฉํ ์คํธ๋ฅผ ์งํํ๊ธฐ ์ ์ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ผ ์ ์๋ค.ํ ์คํธ ์ฝ๋๊ฐ ์ด์์๋ ๋ช ์ธ๊ฐ ๋๋ค.( ํ ์คํธ๋ฅผ ์ฝ๊ณ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ ์์ธก ๊ฐ๋ฅํ๋ค.)ํ์ฌ ๊ฐ์ฅ ํซํ ํ ์คํธ ๋๊ตฌEasy SetupInstatnt Feddback ( ๊ณ ์น ํ์ผ๋ง ๋น ๋ฅด๊ฒ
useRef ์ฌ์ฉforwardRef: ์์๋ก ์ฐธ์กฐ ์ ๋ฌํ๊ธฐ!create react app ์ ์ฌ์ฉํด ๋ง๋ ํ๋ก์ ํธ๋ npm run build ๋ฅผ ํตํด ๋น๋ ํ ์ ์๋ค.build/static ํด๋ ์์ JS,CSS ํ์ผ๋ค์ด ์์ฑ, ํ์ผ ์ด๋ฆ์ hash ๊ฐ์ด ๋ถ๋๋ค.โ๏ธ
์ฐ์ ๋ ์ค ํ๋๋ฅผ ์ ํํ๋ ๊ฒ์ด ์๋ ๋ ๋ค ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.Complex Setup / Management: ํฐ ํ๋ก์ ํธ๋ฅผ ํ๋ ๊ฒฝ์ฐ ๋๋ฌด ๋ง์ Context Provider๋ฅผ ๊ฐ๊ฒ ๋๋ค.( ๋ณต์ก๋ ์์น )Perfomance: state ๋ณ๋ํ์๊ฐ ๋ง์ ๊ฒฝ์ฐ
: Software Development Life Cycle์ํํธ์จ์ด๋ฅผ ๊ณํ, ๊ฐ๋ฐ, ์ํ, ๋ฐฐํฌํ๋ ๊ณผ์ ์๊ตฌ์ฌํญ ๋ถ์ -> ์ค๊ณ -> ๊ตฌํ -> ํ ์คํธ -> ์ ์ง ๋ฐ ๋ณด์build & Fix: ์ผ๋จ ๋ง๋ค๊ณ ๊ณ ์น๊ณ ๋ง๋ค๊ณ ๊ณ ์น๋ ๋ชจ๋ธ.Prototype: ์ต์ํ์ ์๊ตฌ์ฌ
npx create-react-application redux-practicenpm i redux react-reduxsrc > store > index.jsindex.jsstore ์ด์ฉ์ด ํ์ํ ๋ถ๋ถ์ ์ ๊ณตํ๋ค.ํ์ง๋ง ํ๋ก์ ํธ์ ํ๋์ store๋ง ๋ง๋ค์ ์์ผ๋ ํ๋ก
react์์ redux store๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๊ณ ์ฌ์ฉํ ์ปดํฌ๋ํธ์์ react-redux์ useSelector hook์ ์ฌ์ฉํ์ฌ data๋ฅผ ์ฝ์ด์ฌ ์ ์๋ค.useSelector hook ์ ์ด์ฉํด ์ฝ์ด์ค๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ฅผ react-redux ๊ฐ ์๋์ผ๋ก
์ฝ๋ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์ปดํจํฐ์ ์ฐ์ฐ์ 5์ด ์ด๋ด๋ก ํ๋๋ก ํ์ด์ผํ๋ค.์ด๋ฆผ์ก์ ์ผ๋ฐ์ ์ผ๋ก js ์ฐ์ฐ ์๋๋ฅผ ์ด๋น 2000๋ง๋ฒ ์ ๋๋ก ์๊ฐํ๊ณ ๋ฌธ์ ๋ก ์ฃผ๋ ์ ๋ ฅ๊ฐ์ ํฌ๊ธฐ ์ฆ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ฌ 5์ด ์์ ์ฐ์ฐ์ ๋ง์น๋๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ฑํ๋ค.์ง๋ฌธ์ฝ๊ธฐ
์๋ณธ state๋ฅผ ์ง์ ์์ ํ์ง ์๊ธฐ!redux store ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฃผ์ํ ์ ์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ผํ๋ค๋ ๊ฒ์ด๋ค.action์ reducer์ ๋ณด๋ด์ฃผ์ด ์๋ก์ด state์ ๊ธฐ์กด state๊ฐ์ ๋ณต์ฌํ๊ณ ์๋ก์ด state ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ์๋ก์ด ์คํ ์ดํธ๋ฅผ ๋ฐํ
npm i react-redux ์ค์นnpm i @reduxjs/toolkit ์ค์นname-slice.js createSlice() ์์ฑinitialState ์์ฑconst uiAcitons = uiSlice.actions; ์์ฑsrc/store/index.jsconst
Redux ๋น๋๊ธฐ ์คํ
Redux-thunk
ํด์ปค๋ด์ค ํ์ด์ง์์ ์ ๊ณตํ๋ api๋ฅผ ํ์ฉํ์ฌ ๋ฆฌ๋ฉ ํ์ด์ง ๋ง๋ค๊ธฐ.ํด์ปค๋ด์คsvelte๋ก ๋ง๋ ์์: ex) ์ค๋ฒจํธ๋ก ๋ง๋ ํด์ปค๋ด์ค ๋ฆฌ๋ฉ ํ์ด์งUI/UX ํ๊ณผ์ ํ์ .๋์์ธ ์์์ ๋ณด๊ณ ๋์์ด๋์ ์๋๋ฅผ ๋ฃ๊ณ ํ์ํ ๋ถ๋ถ๋ค ์ถ๊ฐํ๊ณ ๋ถํ์ํ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ธฐ ์ํ ํ์.๊ตฌ
React Mini Project ์์ ์์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ์ค๊ณํ๊ธฐ ์์ ์ปดํฌ๋ํธ๋ถํฐ ์์ฑํ๊ธฐ ๊ทธ๋ฌ๊ธฐ ์ํด ์ปดํฌ๋ํธ ๋จ์๋ฅผ ์ ๊ตฌ์ฑํ๊ณ ์์ ๋จ์๋ฅผ ๊ณจ๋ผ ์์ฑํ๋ค. ์ฐ์ phone ์ฌ์ด์ฆ ์ ์์ ์ํด > phone > phoneTop & application
๐ข ์ค์ฐํด ์ดํ ( 11์ฃผ์ฐจ ๋ชฉ, ๊ธ 2์ผ ์ค 1์ผ ) React Mini Project ๊ตฌํ 01. head, nav 02. Home 1) Ranking Top 5 Ranking Contents slider swiper api ์ฌ์ฉ paginati
โ List ์นด๋ ๋๋๊ทธ ๋ชจ์ ์ถ๊ฐโ slide pagination ์ ๋ณ๊ฒฝโ ๊ฒฝ๊ณผ์๊ฐ api๋ก ์ถ๋ ฅ
๐ ์ค๋ ๊ตฌํ ๋ชฉํโ ์์ธ ํ์ด์ง (component ์์ฑ)
๐ ์ค๋ ๊ตฌํ ๋ชฉํโ ๋ฌดํ ๋๊ธ ๋๋๊ธ ๊ตฌํ๋ฌดํ ๋๊ธ ๋๋๊ธ ๊ตฌํ
๐ ์ค๋ ๊ตฌํ ๋ชฉํโ ์ ์ ์ ๋ณด ๋ชจ๋ฌ ๊ตฌํ์ ์ ์ ๋ณด ๋ชจ๋ฌ ๊ตฌํ
5๊ฐ ๊ธฐ์ ์ด ์ฐธ์ฌํ๋ ํ์ด๋ ํ๋ก์ ํธ๊ฐ ์์ ๋์๋ค.๊ฐ ๊ธฐ์ ๋ค์ด 2๊ฐ์ง project๋ฅผ ๊ธฐํํ๊ณ 10๊ฐ ํ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค.ํจ๊ป ํ์ ํ๊ฒ ๋ ๊ธฐ์ ์ ์๋ํด์๊ธ๋ก๋ฒํํธ๋์ค ์ด๋ค.๋ํ๋, ๊ธฐํ๋ด๋น์๋, ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ด๋น ๋งค๋์ ๋ ์ด ์ธ๋ถ๊ณผ ์ค์ ํตํ ๋ฏธํ ์ ํ์๋ค.๋
( \* UX/UI ๋์์ด๋ ์ตํฌ๊ฒฝ ๋ ๋ฐํ ์๋ฃ ์ฒจ๋ถ )์ด๊ตํ๋restApi ์ฌ์ฉ ๋ฐ sort ํ ์ถ๋ ฅ ๊ณผ์ ์ค๋ช ์ด๊ทผ์(๋ธ๋ก๊ทธ ๋ณธ์ธ)๋ฌดํ ๋๊ธ ๋ก์ง ๊ตฌํ ์ค๋ช ์ด์งํ๋์ ์ฒด ๋์ ๊ตฌํ ์ํ ๋ฐ ๋์ ์ค๋ช
6\. ์ต์ข ์ ์ถ
ํ๋ก์ ํธ์ ๋ฐฉํฅ์ฑ์ ์ ์ํ๋ ํ๋ก์ ํธ ์ด๋ฆ ์ธ์ฐ๊ธฐ์ค์ application ์ ์ฌ์ฉํ ๋์์ ๋ํํ๋ ํ๋ฅด์๋๋ฅผ ์ค์ ํ๋ฅด์๋๊ฐ ๋ง๊ธฐ๋ณด๋จ ํน์ง์ ๊ฐ๋ ์ ์ ์์ ํ๋ฅด์๋๊ฐ ์ข์.์์) ๊ณต๋ฌด์ ์ค๋น์ application - ์ด์์, ์ฅ์์application์ ์ฐ๊ด๋ ๋ชจ
๋ชจ์๊ณ ์ฌ์ ๋ํ ๋ค๋ฅธ ํ์๋ค์ ๋๋์ ๊ณต์ ํ๊ณ ์ถ๋ค.(์ฑ์ ํ ๋ฐ๊ธฐ ์ ์ ์ฒด๊ฐ๋์ด๋ ํ๊ฐ ๋ฏธ๋ฌ)๋ชจ์๊ณ ์ฌ์ ๋ฌธ์ ์ ๋ํ ํด์, ์ถ์ ์ด์ ๋ฑ์ ์ฑ์ ์ ๋ฐ์๊ณผ ๋์์ ํด์ํ๊ณ ์ถ๋ค.(์ฝ๋ฉํธ ์ฌ์ฉ ์๊ฐ ์ ํ)์๊ฐ์๋ค์ ์์ ๊ฐ์ด ํ์ํ๋ค.์๊ฐ์๋ค์ ๊ณต๋ถํ๋๋ผ ๋ฐ์๋ค.์๊ฐ์์ ๊ฐ
์์ฑ ์๋ฃ! ์๋ฃ! ์๋ฃ!๋ชจ๋ ์ฐธ์ฌ ๊ธฐ์ ์ด ์ฐธ๊ดํ ์ค์์ ๋ชจ๋ ํ์ด๋ ํ๋ก์ ํธ ์ฐธ์ฌ ํ๋ค์ด ๊ธฐํ ๋ฐํ๋ฅผ ํ๋ค.์ง๊ธ๊น์ง ๊ธฐํ์ ์ํด ์กฐ์ฌํ ๊ฒ๋ค์ ๋ชจ๋ ppt ์ ๋ด์ ๊ธฐํ ๋ฐํ!๋ช๊ฐ์ง ๊ณ ๋ฏผ์ฌํญ๋ค์ ๋ฌผ์ด๋ณด๊ณ ๋ณธ๋ ํ๋ก์ ํธ ์ทจ์ง์ ํฉ๋นํ์ง๋ ๋ค์ ํ์ธ ํ์๋ค.์ญ์๋ ๊ณ ๋ฏผ
๋์์ธ ์์!1์ฐจ ๋์์ธ ๊ธฐํ์ 3์ผ!๊ตฌ์ฒด์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ ผ์ํ๊ณ ํ์ด์ง ์์๋ถํฐ ๋๊น์ง ํ์ํ ๊ธฐ๋ฅ๋ค๊ณผ ์ฌ์ฉ๋ฐฉ์์ ๋ ผ์ํ์๋ค.์์ผ๋ก ๋์์ธ ๊ธฐ๊ฐ๋์ ์ง์์ ์ผ๋ก ํ์ธํ๋ฉฐ ํ์๋ฅผ ํตํด ๊ธฐ๋ฅ ์ฌ์ฉ ์์๊ณผ ๋ฐฉ์์ ๋ง์ถฐ๋์์ธ์ด ์ ๋๋๋ก ๋์์ด๋์ ๊ฐ๋ฐ์๊ฐ ์ํต ํ์!
48์๊ฐ ๋จ๊ธฐ ํ๋ก์ ํธ ํด์ปคํค ์ฐธ์ฌ!
48์๊ฐ ๋จ๊ธฐ ํ๋ก์ ํธ ํด์ปคํค ์ฐธ์ฌ!
48์๊ฐ ๋จ๊ธฐ ํ๋ก์ ํธ ํด์ปคํค ์ฐธ์ฌ!
๊ฐ์ฅ ์ฃผ๊ฐ ๋๋ ํ์ด์ง ๋ถํฐ ๊ฐ๋ฐํ์ฌ ๋๊ฐ๋ค.main - report page.nav, header, noticelogin์์ผ๋ก ๊ฐ๋ฐ!github organization ์ ๋ง๋ค์ดrepo ๋ฅผ fork ํ์ฌ ์์ !master, develop branch ๋ 1๋ช ์ด์์ a
d3 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์๊ฐํ ํ๊ธฐ.๋ชฉํ์งํ
๋ฐ์ํ ํ์ด์ง ์์ฑ ๊ธฐ๋ณธ ๊ธฐํ ๋ฐ ๋์์ธ ๋ฌธ์ .๋ฐ์ํ ํ์ด์ง๋ฅผ ์์ฑํ๊ธฐ์ํด ๊ณ ๋ ค๋์ด์ผํ ๊ฒ๋ค์ด ๋ง๋ค.๊ธฐํ ๋์์ธ ๋จ๊ณ์์ ๋์น ๊ฒ๋ค์ด ๋ง์ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฌธ์ ๋ฐ์.๋ง์ ๋ชจ๋ํฐ ์ฌ์ด์ฆ, ํ ๋ธ๋ฆฟ ์ฌ์ด์ฆ, ์ค๋งํธํฐ ์ฌ์ด์ฆ์ ๋์ํ๊ธฐ ์ํด์์ ๋ฐ์ํ์ ๊ธฐํํ์๋ค.๊ฐ๋ฐ ์์
ํจ์คํธ์บ ํผ์ค ํ๋ก ํธ์๋ ์คํํธ์ ํธ๋ ๊ณผ์ ์๋ฃ