Home | Dlog
๋ชจ์ค๋ถํธ (1)
๋จธ์ฑ์ด๋ ์น๊ตฌ์๊ฒ ๋ชจ์ค๋ถํธ๋ฅผ ์ด์ฉํ ํธ์ง๋ฅผ ๋ฐ์์ต๋๋ค. ๊ทธ๋ฅ์ ์ฝ์ ์ ์์ด ์ด๋ฅผ ํด๋
ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
๋ฌธ์์ด letter๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, letter๋ฅผ ์์ด ์๋ฌธ์๋ก ๋ฐ๊พผ ๋ฌธ์์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
๋ชจ์ค๋ถํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐํ
์ฝ ํ๋ฆฌ์ฝ์ค์ ์ง์คํ๋๋ผ ์ฝ๋ฉ ํ
์คํธ ์ฐ์ต์ ์ ๋ชปํ๊ณ ์๋ค. ์ฐํ
์ฝ ๋๋๊ณ ๋๋ฉด ์ด์ฌํ ํด์ผ์ง! ๐ช
์ต๋๊ฐ ๋ง๋ค๊ธฐ (2)
์ ์ ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. numbers์ ์์ ์ค ๋ ๊ฐ๋ฅผ ๊ณฑํด ๋ง๋ค ์ ์๋ ์ต๋๊ฐ์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๊น ์ปค๋ฐ ๋ฉ์์ง ์์ ํ๊ธฐ
๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐํ ์ปค๋ฐ ๋ฉ์์ง ์์
์์ธ์์ ๊น์๋ฐฉ ์ฐพ๊ธฐ
Stringํ ๋ฐฐ์ด seoul์ element์ค โKimโ์ ์์น x๋ฅผ ์ฐพ์, โ๊น์๋ฐฉ์ x์ ์๋คโ๋ String์ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํ์ธ์.
seoul์ โKimโ์ ์ค์ง ํ ๋ฒ๋ง ๋ํ๋๋ฉฐ ์๋ชป๋ ๊ฐ์ด ์
๋ ฅ๋๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ฃผ์ฌ์์ ๊ฐ์
๋จธ์ฑ์ด๋ ์ง์ก๋ฉด์ฒด ๋ชจ์์ ์์๋ฅผ ํ๋ ๊ฐ์ง๊ณ ์๋๋ฐ ์ด ์์์ ์ ์ก๋ฉด์ฒด ๋ชจ์์ ์ฃผ์ฌ์๋ฅผ ์ต๋ํ ๋ง์ด ์ฑ์ฐ๊ณ ์ถ์ต๋๋ค. ์์์ ๊ฐ๋ก, ์ธ๋ก, ๋์ด๊ฐ ์ ์ฅ๋์ด์๋
๋ฐฐ์ด box์ ์ฃผ์ฌ์ ๋ชจ์๋ฆฌ์ ๊ธธ์ด ์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ก์ ๋, ์์์ ๋ค์ด๊ฐ ์ ์๋ ์ฃผ์ฌ์์ ์ต๋ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
promise๋ ์ฝ๋ฐฑ(callback) ์ง์ฅ์ ๋น ์ง์ง ์๊ฒ ๋์์ฃผ๋ ์ ์ฉํ ์๋ฐ์คํฌ๋ฆฝํธ object์ด๋ค. (=์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋๋ก ๋์์ค๋ค.)
๋ฏธ๋์ ์ด๋ค ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ฒ ๋ค๋ โ์ฝ์โ์ ํ๋ค.
promise๋ฅผ ์ฌ์ฉํ๋ฉด state(์ํ)๋ ์ ์ ๋๊ธฐ(pending)๋์๋ค๊ฐ ์ฑ๊ณตํ๋ฉด fulfilled, ์คํจํ๋ฉด rejected๋ก ๋ฐ๋๋ค.
1์ฃผ์ฐจ๋ ์ฝ๋ฉ ํ
์คํธ๋ฅผ ํ๋ค๋ ์๊ฐ์ผ๋ก ์ํ๋๋ฐ 2์ฃผ์ฐจ๋โฆ ์ง์ง ์ด๋ป๊ฒ ํด์ผํ ์ง ๊ฐ๋ ์ ์๋ค.
์ผ๋จ class๋ผ๋ ๊ฒ์ ์ฒ์๋ดค๋ค. ํ
์คํธ ์ฝ๋๋ ์ฒ์ ๋ณด๊ณ eslint๋ ์ฒ์ ๋ค์ด๋ดค๋ค.
์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋๋ฐ ์ด๊ฒ๋ ์ญ์ ์ฒ์ ์ฌ์ฉํด๋ณธ๋ค ๐ญ
์ฒ์์ธ ๊ฒ ๋๋ฌด ๋ง์์ ์ผ๋จ์ class ๊ฐ์๋ฅผ ๋ฃ๊ธฐ๋ก ํ๋ค.
์ธ๊ณํ์ฑ์ ๋์ด
PROGRAMMERS-962 ํ์ฑ์์๋ ๋์ด๋ฅผ ์ํ๋ฒณ์ผ๋ก ๋งํ๊ณ ์์ต๋๋ค. a๋ 0, b๋ 1, c๋ 2, โฆ, j๋ 9์
๋๋ค.
์๋ฅผ ๋ค์ด 23์ด์ cd, 51์ด์ fb๋ก ํํํฉ๋๋ค. ๋์ด age๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ PROGRAMMER-962์ ๋์ด๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์์ด ์ฑ๋ฆฐ์ง๋ 30์ผ ์์ ์ ํ์์ด ์์
(20๋ถ)์ ์ด 100ํ ๋ค์ผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
์๋ฌด ์๊ฐ ์์ด ๋์ ํ๋ค๊ฐ ์ฐํ
์ฝ ํ๋ฆฌ์ฝ์ค๋ ๋ฑ ๊ฒน์น๊ณ ๋ง์๋ค. ๐
๊ทธ๋๋ 3, 4์ฃผ์ฐจ์ ์ ๊ฒน์ณ์ ๋คํ์ด๋คโฆ!
์๊ณ ๋ฆฌ์ฆ
๋ฐฐ์ฐ๋ ๊ฒ ์ ~๋ง ๋ง๋ค. ์ ์ํ๋ผ๋ ์๋ฏธ๋ก ๊ฐ๋ฒผ์ด(?) ๋ฌธ์ ๋ฅผ ๋๋ค๊ณ ํ๋๋ฐโฆ ์ฝ์ง ์๋ค. ๐
1 ~ 2์ฃผ ์ ๋ถํฐ ์ฝ๋ฉ ํ
์คํธ ๋๋น ๊ณต๋ถ๋ฅผ ํ์ง ์์๋ค๋ฉด ํฐ์ผ๋ ๋ปํ๋ค.
ํ๋ก๊ทธ๋๋จธ์ค์์ ๋ฌธ์ ๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ํ์๋ ๊ฒ ๋ง์ ๋์์ด ๋์๋ค.
๊น
๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฅ ๋ณ๋ก ๊น ์ปค๋ฐํ๋ ๊ฒ๋ ์ ๊ธฐํ๋ค. ๊ธฐ๋ฅ ๋ณ๋ก ์ปค๋ฐํ๋ฉด ์ ์ง ๋ณด์, ํ์
ํ๊ธฐ ํธํ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์๊ฐ ์์ด ๋
๋ค ์ปค๋ฐํ๋ ์ง๋ ๋ฌ๋ค์ด์ฌโฆ๐
์์ผ๋ก๋ ํผ์ ๊นํ๋ธ ์ธ ๋๋ ์ ๊ฒฝ์จ์ผ๊ฒ ๋ค. ์ข์ ์ต๊ด์ ๋ง๋ค๊ธฐ ์ํด! ๐ช
๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ
์์ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ x๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ด ๋๋๋ก ํ๋ ๊ฐ์ฅ ์์ ์์ฐ์ x๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋ต์ด ํญ์ ์กด์ฌํจ์ ์ฆ๋ช
๋ ์ ์์ต๋๋ค.
3 โค n โค 1,000,000
ํ์ค๋ ์ (Harshad number)
์์ ์ ์ x๊ฐ ํ์ค๋ ์์ด๋ ค๋ฉด x์ ์๋ฆฟ์์ ํฉ์ผ๋ก x๊ฐ ๋๋์ด์ ธ์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด 18์ ์๋ฆฟ์ ํฉ์ 1+8=9์ด๊ณ , 18์ 9๋ก ๋๋์ด ๋จ์ด์ง๋ฏ๋ก 18์ ํ์ค๋ ์์
๋๋ค.
์์ฐ์ x๋ฅผ ์
๋ ฅ๋ฐ์ x๊ฐ ํ์ค๋ ์์ธ์ง ์๋์ง ๊ฒ์ฌํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ(์ซ์๋ง ๊ณจ๋ผ ์ ๋ ฌ)
๋ฌธ์์ด my_string์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, my_string ์์ ์๋ ์ซ์๋ง ๊ณจ๋ผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ ๋ฆฌ์คํธ๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
function solution(my_string) {;
return my_string.match(/\d/g).map(n=>Number(n)).sort((a,b)=>a-b);
}
๋๋ match๋ฅผ ์ด์ฉํด ์ซ์๋ง ๊ณจ๋ผ๋ธ ๋ค์, Number๋ก ๋ฌธ์ํ์ ์ซ์ํ์ผ๋ก ๋ฐ๊พธ๊ณ sort๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํด์ฃผ์๋ค.
์โฆ ๋ ๋ฒจ 0์ด ๋ ๋ฒจ 1๋ณด๋ค ์ด๋ ต์งโฆ? ์ ํ๋ฆฌ๋ ๋ฌธ์ ๋ ์ผ๋จ ๊ฑด๋๋ฐ๊ณ ํ๋ฆฌ๋ ๋ฌธ์ ๋ถํฐ ํ์๋ค.
๋๋ฌธ์์ ์๋ฌธ์
๋ฌธ์์ด my_string์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋๋ฌธ์๋ ์๋ฌธ์๋ก ์๋ฌธ์๋ ๋๋ฌธ์๋ก ๋ณํํ ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
function solution(my_string) {
return Array.from(my_string,x => x === x.toUpperCase() ? x.toLowerCase() : x.toUpperCase()).join("");
}
๊ฐ๋ฏธ๊ตฐ๋จ
๊ฐ๋ฏธ ๊ตฐ๋จ์ด ์ฌ๋ฅ์ ๋๊ฐ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ๋ฏธ๊ตฐ๋จ์ ์ฌ๋ฅ๊ฐ์ ์ฒด๋ ฅ์ ๋ฑ ๋ง๋ ๋ณ๋ ฅ์ ๋ฐ๋ฆฌ๊ณ ๋๊ฐ๋ ค๊ณ ํฉ๋๋ค.
์ฅ๊ตฐ๊ฐ๋ฏธ๋ 5์ ๊ณต๊ฒฉ๋ ฅ์, ๋ณ์ ๊ฐ๋ฏธ๋ 3์ ๊ณต๊ฒฉ๋ ฅ์ ์ผ๊ฐ๋ฏธ๋ 1์ ๊ณต๊ฒฉ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฒด๋ ฅ 23์ ์ฌ์น๋ฅผ ์ฌ๋ฅํ๋ ค๊ณ ํ ๋,
์ผ๊ฐ๋ฏธ 23๋ง๋ฆฌ๋ฅผ ๋ฐ๋ฆฌ๊ณ ๊ฐ๋ ๋์ง๋ง, ์ฅ๊ตฐ๊ฐ๋ฏธ ๋ค ๋ง๋ฆฌ์ ๋ณ์ ๊ฐ๋ฏธ ํ ๋ง๋ฆฌ๋ฅผ ๋ฐ๋ฆฌ๊ณ ๊ฐ๋ค๋ฉด ๋ ์ ์ ๋ณ๋ ฅ์ผ๋ก ์ฌ๋ฅํ ์ ์์ต๋๋ค.
์ฌ๋ฅ๊ฐ์ ์ฒด๋ ฅ hp๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ฌ๋ฅ๊ฐ์ ์ฒด๋ ฅ์ ๋ฑ ๋ง๊ฒ ์ต์ํ์ ๋ณ๋ ฅ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ช ๋ง๋ฆฌ์ ๊ฐ๋ฏธ๊ฐ ํ์ํ์ง๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
= ์ ์ n์ ๋ง๋ค ๋ ํ์ํ 5, 3, 1์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๋ฐ๋ณต ์ถ๋ ฅํ๊ธฐ
๋ฌธ์์ด my_string๊ณผ ์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, my_string์ ๋ค์ด์๋ ๊ฐ ๋ฌธ์๋ฅผ n๋งํผ ๋ฐ๋ณตํ ๋ฌธ์์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
function solution(my_string, n) {
return my_string.split("").map((x)=>x.repeat(n)).join("");
}
๋ฆฌ์กํธ ์คํฐ๋ 1์ฃผ ์ฐจ ๊ณต๋ถ ์๋ฃ์์
๋งํ๋๋ก โ โClassํ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ํด์ผํ ์ผ์ด ์๊ธธ ์๋ ์์ผ๋ Classํ ์ปดํฌ๋ํธ๋ฅผ ํจ์ํ ์ปดํฌ๋ํธ๋ก ๋ฐ๊พธ๋ ๊ฒ๋ ๊ณต๋ถํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.โ โ
ํด๋์ค ์ปดํฌ๋ํธ๋ฅผ ํจ์ํ ์ปดํฌ๋ํธ๋ก ๋ฐ๊พธ๋ ์ฐ์ต์ ํ๋ค.
์๋ฆฟ์ ๋ํ๊ธฐ
์์ฐ์ N์ด ์ฃผ์ด์ง๋ฉด, N์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๊ตฌํด์ return ํ๋ solution ํจ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์.
์๋ฅผ๋ค์ด N = 123์ด๋ฉด 1 + 2 + 3 = 6์ return ํ๋ฉด ๋ฉ๋๋ค.
๊ฐ์ฅ ํฐ ์ ์ฐพ๊ธฐ
function solution(array) {
const max = Math.max(...array);
return [max, array.indexOf(max)];
}
Math.max๋ก ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๊ณ , indexOf๋ก ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์ฐพ์๋ค.
์ท๊ฐ๊ฒ ํ ์ธ ๋ฐ๊ธฐ
๋จธ์ฑ์ด๋ค ์ท๊ฐ๊ฒ๋ 10๋ง ์ ์ด์ ์ฌ๋ฉด 5%, 30๋ง ์ ์ด์ ์ฌ๋ฉด 10%, 50๋ง ์ ์ด์ ์ฌ๋ฉด 20%๋ฅผ ํ ์ธํด์ค๋๋ค.
๊ตฌ๋งคํ ์ท์ ๊ฐ๊ฒฉ price๊ฐ ์ฃผ์ด์ง ๋, ์ง๋ถํด์ผ ํ ๊ธ์ก์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
function solution(price) {
return Math.floor(price >= 500000 ? price-price/5 : price >= 300000 ? price-price/10 : price >= 100000 ? price-price/20 : price);
}
์ ์ ์์น ๊ตฌํ๊ธฐ (์ผํญ์ฐ์ฐ์)
function solution(dot) {
const x = dot[0];
const y = dot[1];
return x>0 && y>0 ? 1 : x<0 && y>0 ? 2 : x<0 && y<0 ? 3 : 4;
}
F12 > Experiments ํญ - overview
๋๋ ์ค์ ์ ์ 3๊ฐ - more tools - css overview
โ ํํ์ด์ง์ ์ฌ์ฉ๋ ์ปฌ๋ฌ, ํฐํธ ๋ฑ ๊ฐํธํ๊ฒ ํ์ธ ๊ฐ๋ฅ
๋๋ ์ด์ ์ฝ๋ฉ ํ
์คํธ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด ํ๋ก๊ทธ๋๋จธ์ค์ ๋ค์ด๊ฐ ์ฝ๋ฉ ํ
์คํธ๋ฅผ ํ๊ธฐ ์์ํ๋ค.
์์ง ์
๋ฌธ์ด๋ผ ์ฌ๋ฐ๊ณ , ๋ค๋ฅธ ์ฌ๋ ํ์ด ์ฝ๋ ๋ณด๋ ๊ฒ๋ ํฅ๋ฏธ๋กญ๋ค. โ์ด๋ป๊ฒ ์ ๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์๊ฐ์ ํ์๊น?โ ์ ๊ธฐํ๊ธฐ๋ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ ํผ ์ฝ๋ฉ ํ
์คํธ ์ค์ ํฅ๋ฏธ๋ก์ด ํ์ด๋ฅผ ๋ธ๋ก๊ทธ์ ๊ธฐ๋กํด ๋ณด๊ธฐ๋ก ํ๋ค.
Doctype์ด๋?
Document type์ ์ฝ์, html์ด ์ด๋ค ๋ฒ์ ์ผ๋ก ์ ์ธ๋์๋์ง ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ.
์ด๋ฅผ ์ ์ธํด์ฃผ์ง ์์ผ๋ฉด ํธํ๋ชจ๋๋ก ์๋ํ๋๋ฐ ๊ทธ๋ฌ๋ฉด ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๊ฐ ํจ์ฌ ์ฌํด์ง๋ค.
(ํธํ๋ชจ๋์ ๊ฒฝ์ฐ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ)
์์ฆ์ html5์ dtd(Document Type Definition)๋ก doctype์ ์ ์ธ โ < !Doctype html >
โ์๋งจํฑ ํ๊ทธโ๋ ์๋ฏธ๊ฐ ์๋ ํ๊ทธ๋ก, ๋ณด๋ ์ฌ๋์ด ํ๊ทธ์ ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ์ด๋ค ํ๊ทธ์ธ์ง ์ ์ ์๊ฒ ํ๋ค.
์ด๋ฌํ ์๋งจํฑ ํ๊ทธ๋ฅผ ์ ์ ํ๊ฒ ์ฌ์ฉํด ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋งจํฑ ๋งํฌ์
์ด๋ผ๊ณ ํ๋ค.
๐ค ๊ฐ๊ฐ ์ด๋ค ์์ฑ์ ์ฌ์ฉํ๋๊ฐ?
CSS :ย transition
ย ย animation
JS : setInterval()
ย ย requestAnimationFrame()
ย
CSS ์ ๋๋ฉ์ด์
์ฅ์
์ธํ๋ฐ์์ โ์ฒ์ ๋ง๋ ๋ฆฌ์กํธโ ๊ฐ์ ์น์
1๋ถํฐ ์น์
9๊น์ง ๋ฃ๊ณ ๋ชจ๋ ์ค์ต์ ๋๋ด๋ ๊ฒ์ด ๋ฆฌ์กํธ ์คํฐ๋ 1์ฃผ ์ฐจ ๋ถ๋์ด์๋ค.
๋ฆฌ์กํธ๋ฅผ ์ฒ์ ๊ณต๋ถํ๋ ๊ฒ์ด ์๋๋ โ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
, ๋ฆฌ์กํธ ์๊ฐ, ๋ฆฌ์กํธ ์ฐ๋ ๋ฑ์ ๋ด์ฉ์ธ โ ์น์
0๋ถํฐ ์น์
2๊น์ง๋ ๊ทธ๋ฅ ๋์ด๊ฐ๊ธฐ๋ก ํ๋ค.
(JSX์ ๋ํด ์๋ ค์ฃผ๋ ์น์
3๋ ๋ณต์ตํ๋ ๋ง์์ผ๋ก ๋ค์๋ค.)
๋ฆฌ์กํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฝ๋ค๊ฐ ๋ฌธ๋ ํ๊ตญ์ด ๋ฒ์ญ์ด ๊ถ๊ธํด์ ํ๊ตญ์ด ๋ฒ์ ์ ๋๋ ๋ค.
๋ฆฌ์กํธ-์๋ฆฌ๋จผํธ ๋ ๋๋ง ๐
์ด๐ฎ ๊ทธ๋ฐ๋ฐ ํ ๋ฌธ์ฅ์ด ๋ฒ์ญ์ด ์ ๋์ด ์์๋ค. ์ด๋ฒ ๊ธฐํ์ ์คํ ์์ค์ ๊ธฐ์ฌ๋ฅผ ํด๋ณด๊ณ ์ ์คํ ์์ค ๊ธฐ์ฌ ๋ฐฉ๋ฒ์ ๊ฒ์ํ๋ค.
์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ์คํ ์์ค ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ
์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๊ณ , ์์ธํ๊ฒ ์ ์ค๋ช
๋์ด ์์ด ๋๋ถ์ ์ฒซ ์คํ ์์ค ๊ธฐ์ฌ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ง์น ์ ์์๋ค! ๋๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ธฐ์ฌ๋ฅผ ํ๋ค.
๋ฆฌ์กํธ ๊ธฐ์ด์์ Component์ props, State๋ ์ ๋ฆฌํ ์ ์ด ์๋๋ฐ
JSX์ Element์ ๋ํด์๋ ์ ๋ฆฌํ ์ ์ด ์์ด ๋จผ์ ์ด๋ก ์ ํ์คํ๊ฒ ์ดํดํ๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค.
JSX๋?
JavaScript Syntax Extension์ ์ฝ์๋ก JavaScript XML์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
์ฝ๊ฒ ๋งํด JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ์ HTML์ด ๊ฒฐํฉ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋ธ๋ผ์ฐ์ ์คํ ์ , ๋ฐ๋ฒจ(Babel)์ด JSX๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํํ๋ค.
๊ทธ๋ผ ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ JSX๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น?
๋ฆฌ์กํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ๊ทธ๋๋ก ์ฌ์ฉํด HTML์ ์์ฑํ ๊ฒฝ์ฐ, ๊ฐ๋
์ฑ์ด ์ข์ง ์๊ณ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์
๋๋ถ๋ถ JSX๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์คํฐ๋์
์๋ฐ์คํฌ๋ฆฝํธ ๋ณต์ต์ ์ํด ๋
ธ๋ง๋ ์ฝ๋์ ๋ฐ๋๋ผ JS ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๊ณ ,
CS ์ง์๊ณผ ํ๋ก ํธ์๋ ์ด๋ก ๊ณต๋ถ๋ฅผ ์ํด ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์คํฐ๋์ ๋ค์ด๊ฐ๋ค!
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์คํฐ๋๋ ๋งค์ฃผ 2ํ, ๊ฐ์ ์ค๋นํ ์ง๋ฌธ์ ์๋ก์๊ฒ ํ๋ฉด ๋๋ตํ๋ ์์ผ๋ก ์งํ๋์๋ค.
ํ์คํ ์คํฐ๋์์ ๋ถ๋ด์ด ์๋ค. ์ ๋ง๋ค์ด์ง ์คํฐ๋์ ๊ฒฝ์ฐ, ์ ํด์ ธ ์๋ ๋ฐฉ์์ ๊ทธ๋๋ก ์ ๋ฐ๋ผ๊ฐ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋งค๋ฒ ์ ์๊ฐ์ ์ถ์ํ๊ณ , ๋๋ต ์ ํ๋ฉด ์ข์ ์คํฐ๋์์ด๊ณ , ์ฌ๊ธฐ์๋ค๊ฐ ์ถ๊ฐ๋ก ์ ๊ทน์ ์ผ๋ก ์ข์ ์๊ฒฌ์ ๋ด๋ฉด ์๋ฒฝํ ์คํฐ๋์์ด๋ค.
์๊ฐํด ๋ณด๋โฆ ํ์ฌ์์๋ ์ด๋ฐ ํ์์ ์ข์ํ ๊ฒ ๊ฐ๋ค.๐
8์ ๋ง๋ถํฐ ์น ํผ๋ธ๋ฆฌ์
๊ฐ ์๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด ๋
ํ์ ์์ํ๋ค.
[๋๋ฆผ์ฝ๋ฉ] ํ๋ก ํธ์๋ ์
๋ฌธ ๊ฐ์ โ [๋
ธ๋ง๋ ์ฝ๋] ๋ฐ๋๋ผ JS๋ก ํฌ๋กฌ ์ฑ ๋ง๋ค๊ธฐ โ [๋
ธ๋ง๋ ์ฝ๋] ๋ฐ๋๋ผ JS๋ก ๊ทธ๋ฆผ ์ฑ ๋ง๋ค๊ธฐ โ [๋
ธ๋ง๋ ์ฝ๋] ๋ฆฌ์กํธ JS๋ก ์ํ ์น ์๋น์ค ๋ง๋ค๊ธฐ
9์ ๊ฐ ์ด๋ ๊ฒ ์๊ฐ + ํ๋ก์ ํธ ๋ง๋ค๊ธฐ๋ฅผ ํ๋๋ฐ ๋ชฐ๋๋ ์ง์๊ณผ ๊ธฐ์ ๋ค์ ๋ง์ด ์๊ฒ ๋ผ์ ๋ณด๋์ฐผ๋ค.
๊ฐ์๋ฅผ ๋ฃ๊ณ ์ง์์ ์ป๋ ๊ฒ๋ง์ผ๋ก ๋๋ด์ง ์๊ณ ๋ฐฐ์ด ์ง์์ ๋ฐํ์ผ๋ก ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์์ฒญ๋ ๋์์ด ๋๋ค.
๋ฌด๋ฃ ๊ฐ์์์๋ ๋ถ๊ตฌํ๊ณ ์์ง์ ๊ฐ์๋ผ ์ฝ๋ฉ์ ๋ฐฐ์ฐ๊ณ ์ถ์ ์ฌ๋์ด ์๋ค๋ฉด
์์ ๊ฐ์๋ค์ ์ ๊ทน ์ถ์ฒํด ์ฃผ๊ณ ์ถ๋ค. ์ด์ ๋
ธ๋ง๋ ์ฝ๋ ๊ฐ์ ์ค์์ (๋ด๊ฐ ๋ฃ๊ณ ์ถ์) ๋ฌด๋ฃ ๊ฐ์๋
๋ฆฌ์กํธ Hooks, ํธ์ํฐ ํด๋ก ์ฝ๋ฉ, TypeScript๋ก ๋ธ๋ก์ฒด์ธ ๋ง๋ค๊ธฐ, ๋ชจ๋๋ฅผ ์ํ ๊น+๊นํ๋ธ, Next.js, React Native, ์ด 6๊ฐ์ ๊ฐ์๊ฐ ๋จ์๋ค.
ํผ์ ๋ฆฌ์กํธ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ง์ฃผํ ๋ฌธ์ ๋ค ์ค์ ๊ฐ์ฅ ํ๋ค์๋ ๊ฑด ๊นํ๋ธ ๋ฐฐํฌ์๋ค.
์์ ์ ๋ฆฌ์กํธ ์ฐ์ตํ๊ณ ๊นํ๋ธ ๋ฐฐํฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์ด ์์ด์(๋งํฌ-๊นํ๋ธ์ ๋ฆฌ์กํธ ๋ฐฐํฌํ๊ธฐ)
๋ฐฐํฌ๋ ์ ํ ๊ฑฑ์ ํ์ง ์์๋๋ฐ ์ด๊ฒ ์ฌ์ผ.
๋ฐฐํฌ ํ ๋ด๊ฐ ๋ง์ฃผํ ๊ฒ์ ๊น๋ง ํ๋ฉด๋ฟ์ด์๋คโฆ๐ข ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์ถ์ด ๊ตฌ๊ธ๋ง์ ํด๋ด๋ ๋ง๋
ํ ํด๊ฒฐ์ฑ
์ด ์ ๋์๋ค.
ํ์ง๋ง ๋ช
ํํ๊ฒ ์๊ฒ ๋ ๊ฒ์ ์ค๋ฅ์ ์์ธ. 1) ๋ฆฌ์กํธ ํด๋ ์ฌ์ฌ์ฉ๊ณผ 2) ๋ฆฌ์กํธ ๋ผ์ฐํฐ์ ๋ฌธ์ ์๋ค.
๐ ๋ง์๊ฐ์ง
์ด๊ธ ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์์ํ ๋, ๋ฆฌ์กํธ... ๋ถ์ด์ฃผ๊ฒ ๋ค๋ ๋ง์์ผ๋ก ์์ํ์ง๋ง ๋ถ์์ง๋ ๊ฑด ๋์๋ค. ์ด๊ธ์ด๋ผ ๋ง๋งํ๊ฒ ๋ดค๋๋ฐ
๋ง๋งํ๊ฒ ๋ณผ ๋งํ ๊ฒ์ด ๋ชป ๋์๋ค.๐ ๊ทธ๋๋ ์ด์ฌํ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ดํดํ๋ ์ ์ ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํด ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ด์ก๋ค.
๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด์ ๋ฆฌ์กํธ ์ฌ์ฉ๋ ์ต์ํด์ง๊ณ ์ถ์๊ณ , ๋ฆฌ์กํธ๋ก ์น ์ฌ์ดํธ๋ฅผ ๋ง๋ค๋ฉด์ ํ์ํ ๊ธฐ์ ์ ๋ฌด์์ธ์ง ์์๋ด๊ณ ๋ฐฐ์ฐ๊ณ ์ถ์๋ค.
์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ๋๋ Slick๊ณผ Swiper๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ์ธ์ ์ผ๋ก Slick ๋ณด๋ค Swiper๊ฐ ํจ์ฌ ๋ ์ฌ์ฉํ๊ธฐ ํธํ๋ค.
Slick ์ฌ์ฉ๋ฒ
1. ํฐ๋ฏธ๋์ slick ์ค์น
npm i react-slick slick-carousel
1. ํฐ๋ฏธ๋ ์ด์ด์ ๋ฆฌ์กํธ ์์ด์ฝ ๋ค์ด
2. ๋ฆฌ์กํธ ์์ด์ฝ ์ฌ์ดํธ ์ ์
https://react-icons.github.io/react-icons/icons?name=bs
๋
ธ๋ง๋ ์ฝ๋ ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๊ฐ์์ ๊ฐ์ api๋ก ์ํ ์ฑ์ ๋ง๋ค์ด๋ณผ๊น ํ๋ค๊ฐ ๋ฃ์ ์ ์๋ ๊ธฐ๋ฅ์ด ๋ณ๋ก ์์ ๊ฒ ๊ฐ๋ค๋ ์ด์ ์ ํ๊ตญ์ด๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ ์ด์ ๋ก ๋ค๋ฅธ ์ํ api๋ฅผ ์ฐพ๊ธฐ๋ก ํ๋ค.
์ด๋ค api๊ฐ ์ข์๊น ๊ฒ์ํด ๋ณด๋ ์ํ์งํฅ์์ํ ์คํ API, ๋ค์ด๋ฒ API, KMDb API ๊ทธ๋ฆฌ๊ณ The movie DB API๊ฐ ์์๋ค. ์ฌ์ฉํ๊ธฐ ํธํด ๋ณด์ด๊ณ ๋ด๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ ๊ฒ ๊ฐ์
The movie DB API๋ก ์ํ ์ถ์ฒ ์ฑ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ํ๋ฅผ ๋ณด๊ณ ์ถ๊ธด ํ๋ฐ ๋ฌด์จ ์ํ๋ฅผ ๋ณด๋ฉด ์ข์์ง ๋ชจ๋ฅด๊ฒ ์ ๋, ์ํ ์ ํ์ ๋์์ ์ฃผ๋ ์ฑ์ ๋ง๋ค์ด ๋ณด๊ณ ์ถ์๋ค.
The movie DB
๋ณต์ต ๊ฒธ ๋๋ฆผ์ฝ๋ฉ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ๋ฉด ์ข์ ๊ฒ๊ฐ์ CSS ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ธ๋ก๊ทธ์ ๋จ๊ฒจ๋๊ธฐ๋ก ํ๋ค.
๐ฏ Position
๊ธฐ๋ณธ๊ฐ static
- Relative : ์๋ ์๋ ์์น๊ฐ ๊ธฐ์ค
-
- Absolute : ๊ฐ์ฅ ๊ฐ๊น์ด์ ์์นํ ์กฐ์์ด ๊ธฐ์ค / ์ ์ผ ๋ฐ๊นฅ์ ์๋ ๋ฐ์ค๊ฐ ๊ธฐ์ค
- ( ๋ถ๋ชจ ๋ฐ์ค์ position : relative ์ค ๊ฒ! )
- It is positioned relative to its closest positioned ancestor, if any; otherwise, it is placed relative to the initialย containing block.
- Fixed : ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ์ค
- Sticky : ์คํฌ๋กค ํด๋ ์ง์ ํ ์์น ๊ทธ๋๋ก
โ ์ด(columns) : grid-template-columns
| ํ(rows) : grid-template-rows
์ด์ด์โฆ
๐ค Component๋ฅผ ๋๋ ์ ์ฌ์ฉํ๋ ๋ฒ๊ณผ ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํด ์๋ก๊ณ ์นจ ์์ด ํ์ด์ง ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
๐ค ๋ฆฌ์กํธ ๊ธฐ์ด๋ฅผ ๋ณต์ตํ๋ฉด์ map ๋ฉ์๋ ์ฌ์ฉ๊ณผ api๋ฅผ ๊ฐ์ ธ์์ ํ์ํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข ๋ ์ต์ํด์ก๋ค. ๊ทธ๋ฆฌ๊ณ then ๋์ async-await๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ๋ฐฐ์ ๋ค.
๐ณ ๋๋ ์
์ฝ๋ฉ์ผ๋ก ๊ทธ๋ฆผํ์ ๋ง๋ค ์ ์์ ์ค์ด์ผ! ๋ณด๊ธฐ์๋ ๊ฐ๋จํด ๋ณด์ฌ๋ ์ฝ๋ฉํ๋ ๊ฑด ์ ๋ง ๋ณต์กํ๋ค. ์ธ์์ ๋์์๋ ์์ ์ ํ๋ฆฌ์ผ์ด์
ํ๋์ ์ผ๋ง๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ ๋
ธ๊ณ ๊ฐ ๋ค์ด๊ฐ์์งโฆ ๊น์ด ์ดํดํ๊ฒ ๋๋ค. ๐
๐ง ๊ธฐ์ฌ๋ 100% ์์
?
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ๊ทธ๋ฆผ ์ฑ์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐํ๋ค๊ฐ ์๊ฐ๋ณด๋ค ์ด๋ ค์์ ๋จธ๋ฆฌ๋ ์ํ๊ณ (?),
๋ณต์ต๋ ํ ๊ฒธ ํ๋ก ํธ์๋ ์
๋ฌธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ฐ์ํ ํค๋ ๋ง๋๋ ๊ฒ์ ์ฐ์ตํ๋ค.
์ด์ด์โฆ
์ด๋ํ๋ค๊ฐ ํ๋ฆฌ๋ฅผ ์ฌํ๊ฒ ๋ค์ณ์ ์ค๋ ์ฝ๋ฉ์ ๋ง์ด ํ์ง ๋ชปํ๋ค. ์์ ํ ์์ฑํ์ง ๋ชปํด์ ์์ฝ์ง๋ง ๋ถ์์ ๋ด๊ฐ ์ด๋ป๊ฒ ํ ์ ์๋ ๊ฒ ์๋๋๊น ์ด์ฉ ์ ์์งโฆ๐ข
๋น๋ถ๊ฐ์ ์ ์ฌ๋ฉด์ ํํ์ด ์ฝ๋ฉํ๊ณ , ํ๋ฆฌ๊ฐ ๋ง์ด ๋์์ง๋ฉด ์ด์ฌํ ์ฝ๋ฉํด์ผ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ธ์ ๋์์๋ ํ ์ ์์ผ๋๊น ๋์์ ๊ทธ๋ฆผํ ๋์์ธํ๊ณ ๊ทธ๋๋ก CSS๋ก ์ ์ฉํด๋ด์ผ์ง!
์์ ํ๋ก์ ํธ๋ฅผ ํ๋์ฉ ๋ง๋๋๊น ๋ณด๋๋ ์๊ณ ์ฌ๋ฏธ๋ ์๋ค. ์ด๋ ๊ฒ ์ฐ์ตํ๋ค๋ณด๋ฉด ๋์ค์ ๋ด๊ฐ ์ํ๋ ์ฑ๋ ๋๋ฑ ๋ง๋ค ์ ์๊ฒ ์งโฆ? ๐
1. ๊ทธ๋ฆผ ์ฑ ๋ง๋ค๊ธฐ
1. ์ฐ์ HTML ํ์ผ์ canvas ํ๊ทธ๋ฅผ ๋ง๋ ๋ค.
2. ( CSS๋ก ๊ทธ๋ฆผํ์ ์์ฑํ๋ค. ) ์๋ต ๊ฐ๋ฅ
canvas {
width: 800px;
height: 800px;
border: 1px solid #000;
}
body {
display: flex;
justify-content: center;
align-items: center;
}
๐ ๋ฐฐ์ด ๊ฒ
๋ง์ฐํ๊ฒ๋ง ์๊ณ ์์๋ js๋ฅผ ํ์คํ๊ฒ ์๊ฒ ๋์๋ค. ์ด๋ป๊ฒ ์งํ๋๋์ง, event๊ฐ ์ ํํ ๋ฌด์์ธ์ง, argument๋ ๋ฌด์์ด๊ณ ์ ์ฌ์ฉํ๋์ง ๋ฑโฆ
๊ทธ๋ฆฌ๊ณ jsํ์ผ์ 1 ๊ธฐ๋ฅ 1 ํ์ผ๋ก ๋๋ ์ ์ ์ฅํ๋๋ฐ ์ด ์ต๊ด์ ๊ด๋ฆฌํ๊ธฐ๋ ์ข์ ๊ฒ ๊ฐ๊ณ ๋ฆฌ์กํธ ๋ฐฐ์ธ ๋( ์ปดํฌ๋ํธ ๋ถ๋ฆฌ )๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋
ธ๋ง๋์ฝ๋ ๊ฐ์๋ฅผ ๋ณด๋ฉด์ ๊ฐ์ด To-do list๋ฅผ ๋ง๋ค์๊ณ , ์ด๋ฅผ ๋ง๋ค๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ ์ ์ดํดํ ์ ์์๋ค!
๐ค ์๋ก๊ณ ์นจํด๋ ์์ฑํ ํ ์ผ๋ค์ด ๊ทธ๋๋ก ๋จ์์์์ผ๋ฉด ์ข๊ฒ ์ด
ํ๋ก ํธ์๋ ๋จ์์๋ ๊ฐ์ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ก localStorage
๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
key์ value๋ง ์ค๋นํ๋ฉด ๋ก์ปฌ์คํ ๋ฆฌ์ง์์๋ ๊ฐ์ ์ ์ฅํ ์ ์๋ค.
๋ก์ปฌ์คํ ๋ฆฌ์ง๋ฅผ ์ด์ฉํ ๋ค์ํ ๋ฉ์๋๋ ์ฌ๊ธฐ์ ํ์ธํ ์ ์๋ค.
์ฌ๋ฌ number ๋ฉ์๋ ์ค์ ์์ฃผ ์ฌ์ฉ๋๋ 2๊ฐ์ง ๋ฉ์๋
parseInt
string โ number๋ก ๋ฐ๊ฟ์ค๋ค.
isNaN : is not a number?
number์ธ์ง ์๋์ง ํ์ธํ ์ ์๋ค.
- boolean, ์ฆ true or false ๊ฐ์ผ๋ก ์๋ ค์ค๋ค.
- number โ : true
- number โญ : false
Toggle ์งํ ๊ณผ์ ์ดํดํ๊ธฐ
const h1 = document.querySelector("div.hello h1");
function click(){
const clicked = "clicked";
if (h1.classList.contains(clicked)) {
h1.classList.remove(clicked);
}else{
h1.classList.add(clicked);
}
}
๐ ์ฝ๋ ๊ฐ๊ฒฐํ!
const h1 = document.querySelector("div.hello h1");
function click(){
h1.classList.toggle("clicked");
}
-className : ๋ชจ๋ ํด๋์ค๋ฅผ ๋ฐ๊ฟ๋ฒ๋ฆฐ๋ค.
-classList : ํด๋์ค list ์ค ํ๋๋ฅผ ์ ํํด ๋ฐ๊ฟ ์ ์๋ค.
๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฐฉ๋ฌธ์ ์๋ฅผ ํ์ธํ๊ธฐ ์ํด ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค๋ฅผ ์ ์ฉํ๊ธฐ๋ก ํ๋ค. ๊ตฌ๊ธ ๊ฒ์์ ํตํด ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค๋ฅผ ์ ์ฉํ๋๋ฐ, ๋ฐ๋ก ๋ฐ์์ด ์๋๊ธธ๋ โ์ค๋ ๊ฑธ๋ฆฌ๋?โ ์๊ฐํ๋ค.
ํ์ง๋ง ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ์ ์ฉ์ด ์ ๋์ด์์๋ ๊ฒ๐
์ถ์ ID๊ฐ ์๋ ์ธก์ ID๋ฅผ ๋ฑ๋กํ ๊ฒ ๋ฌธ์ ์ ์์ธ์ด์๋ค.
๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค์ ๋ฑ๋กํ๋๋ฐ ์ ์ฉ์ด ์ ๋๋ค๋ฉด?
1) ์ผ์ชฝ ํ๋จ์ ํฑ๋๋ฐํด ๋ชจ์(๊ด๋ฆฌ, Admin) ํด๋ฆญ
๋จ์ถํค
Multi Selection
๐ Ctrl+d
ํ ๋จ์ด๋ฅผ ์ ํํ๊ณ ctrl+d ๋ฐ๋ณต์ ์ผ๋ก ๋๋ฌ์ฃผ๋ฉด ์ค๋ณต ๋จ์ด ์๋์ผ๋ก ๋ชจ๋ ์ ํ๋จ โ ๊ฐ๋จ ์ญ์ , ์์ ๊ฐ๋ฅ
Column (box) selection
๐ Ctrl+Shift+alt+โ or โ
ํด๋น ์ด์ ์ปค์ ์์ฑ
( ์ฝ๋ฉํ๋ค๊ฐ ์ฐ์ฐํ ์๊ฒ๋ ๋จ์ถํค์ธ๋ฐ ๋๋ฌด ํธํ๋ค. ๋ชจ๋ฅด๋ ์ฌ๋ ์์์ผ๋ฉดโฆ )
๋ธ๋ญ์ผ๋ก ์ ์ฒด ์ ํ-> Shift+alt+๋๋๊ทธ
ํด๋น ๋ธ๋ญ ๋์ ์ปค์ ์์ฑ
JavaScript์ ์๋ Elements(์์)์ Events(์ด๋ฒคํธ)๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด?
MDN ์ฌ์ดํธ๋ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ๋ง์ ์์๋ค๊ณผ ์ด๋ฒคํธ๋ค์ ํ์ธํ ์ ์๋ค.
1. MDN
Element - Web APIs | MDN
2. console.dir();
Undefined: ๊ฐ์ด ์ ์๋์ด์์ง ์๋ค.
๋ณ์๋ ์ธ์ง ๊ฐ๋ฅํ์ง๋ง ๊ฐ์ด ์ ์๋์ด ์์ง ์์ ์ํ.
Null: ๊ฐ์ด ์๋ค.
์์ฐ์ ์ผ๋ก ๋ฐ์ํ์ง ์์. โ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ํ์คํ ์๋ ค์ฃผ๊ธฐ ์ํด ์ผ๋ถ๋ฌ ์ฌ์ฉ!
- const ย ย :ย ย ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ, ์ฌํ ๋น ๋ถ๊ฐ๋ฅ
- let ย ย ย ย ย ย :ย ย ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ, ์ฌํ ๋น ๊ฐ๋ฅ
- var ย ย ย ย ย ย :ย ย ์ฌ์ ์ธ ๊ฐ๋ฅ, ์ฌํ ๋น ๊ฐ๋ฅ
1. Array
- ํ๋์ ๋ณ์ ์์ ๋ฐ์ดํฐ list๋ฅผ ๊ฐ์ง๋ ๊ฒ.
๋ณ์๋ช
[index]
โ ๋ฐฐ์ด ์์ ์๋ ๊ฒ์ index ๋ฒํธ๋ก ๋ถ๋ฌ์ฌ ์ ์์. โ๏ธ ์ฃผ์) ์ปดํจํฐ๋ 0๋ถํฐ ์
.
const food =ย ['pizza', 'chicken', 'burger', 'noodle']
console.log(food[2]); //burger
๋ฆฌ์กํธ ์ค์นํ๊ธฐ ์ ์ ๋จผ์ Node.js๊ฐ ์ค์น๋์ด ์์ด์ผ ํ๋ค.
Node.js๋ฅผ ์ค์น
ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํํ๋ฉด ๋๋ค.
1. VS code ์์
์์ญ์ ํด๋ ์ถ๊ฐ โ ํด๋ ์์ฑ
ย โย react๋ผ๋ ํด๋๋ช
์ ์ค๋์ ํ ์ ์์ผ๋ ํผํ ๊ฒ
2. ์ ํฐ๋ฏธ๋ ์ด๊ธฐ
ย โย powershell์ ์ค๋ฅ๊ฐ ๋ ์ ์์ผ๋ cmd๋ ๋ค๋ฅธ ๊ฑฐ ์ฌ์ฉํ๋ ๊ฑธ ์ถ์ฒ
Why react?
์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋๊ฐ?
JavaScript๋ ๋ค๋ฅธ ๋ถ๋ถ๋ ์
๋ฐ์ดํธ๋๋ ๋ฐ๋ฉด, React๋ html ์ฝ๋์์ โ๋ณํ๋ ๋ถ๋ถ๋งโ ์
๋ฐ์ดํธ๋๋ค.
โ ์ธํฐ๋ ํฐ๋ธ์ ์ต์ ํ
๊ฒ๋ค๊ฐ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ , ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
๊นํ๋ธ์ React ๊ฐ๋จํ๊ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ
1. package.json ํ์ผ์ ์ฝ๋ 2์ค ์ถ๊ฐ
"deploy" : "gh-pages -d build",
"predeploy" : "npm run build"
SEO๋? ๊ฒ์ ์์ง ์ต์ ํ(search engine optimization)์ ์ค๋ง๋ก
๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ, ๋ค์ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์์ ๊ฒ์์ด ์ ๋๋๋ก ํ๋ ๊ฒ์ ๋งํ๋ค.
๋ค์ด๋ฒ ๊ฒ์ ์์ง์ ๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ๋ฑ๋กํ๋ค๊ฐ '์น ํ์ด์ง ์ต์ ํ'๋ฅผ ๋ฐ๊ฒฌํ๋ค.
'๊ฒ์ ์์ง์ด ์์ฒญํ ํ์ด์ง ์ฝํ
์ธ ๋ฅผ ์ ํด์ํ ์ ์๋์ง'๋ฅผ ์ง๋จํ ์ ์๋ ์ข์ ๊ธฐ๋ฅ์ด๋ค.
๋ค์ด๋ฒ ์น๋ง์คํฐ ๋๊ตฌ์ ๋ค์ด๊ฐ์
๊นํ๋ธ์ ๋ฆฌ์กํธ๋ฅผ ๋ฐฐํฌํ๋ ค๊ณ ํ๋๋ฐ ํฐ ๋ฐฐ๊ฒฝ(๋น ํ์ด์ง)๋ง ๋ฌ๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ๋๋ฌ ์ด๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํด๋ณด๋
Manifest: Line: 1, column: 1, Syntax error.
net::ERR_ABORTED 404
๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ณ ๋๋ '๋๊ธ ๊ธฐ๋ฅ๋ ์์์ผ๋ฉด ์ข๊ฒ ๊ณ , ๊ตฌ๊ธ ๊ฒ์์๋ ๊ฑธ๋ ธ์ผ๋ฉด ์ข๊ฒ ๋๋ฐ...'๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ตฌ๊ธ ๊ฒ์์ ํด๋ณด๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ ๋ธ๋ก๊ทธ๋ค์ด ์์๊ณ , ๋ง์ ๋์์ ๋ฐ์๋ค.
๋ธ๋ก๊ทธ์ ๋ด๊ฐ ์ค์ ๋ก ๋์์ ๋ฐ์ ๋ธ๋ก๊ทธ ์ฃผ์์ ํจ๊ป ๋ธ๋ก๊ทธ์ ๋ค๋ฅด๊ฒ ํ ๋ถ๋ถ์ ์ถ๊ฐ๋ก ์ ๋ฆฌํ๊ธฐ๋ก ํ๋ค.
๊ธฐ๋ณธ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ฆฌ 4ํ, Methods(๋ฉ์๋)
0. ์ฌ๊ฑด์ ๋ฐ๋จ
๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค์๋๋ฐ ๊ธ์ ์์ฑํด๋(์ปค๋ฐ์ ํด๋) ์๋๊ฐ ์ฌ์ด์ง์ง ์๋ ๋ฌธ์ ๋ฐ์.
์๋ ์ฌ๋ ์ฌ๋ฏธ๋ก ๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ ๊ฒ๋ ์์ด์ ์์ธ๊ณผ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ ค๊ณ ์ด์ฌํ ๊ฒ์์ ํ๋ค.
user.email์ด ์ผ์นํ์ง ์๊ฑฐ๋ user.name์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๊ณ ํ๋ค. ํ์ง๋ง ๋์ ์์ธ์ ์ด๊ฒ ์๋์๋ค.
jekyll ํ
๋ง ๊นํ๋ธ์์ Fork๋ฅผ ๋๋ฌ ๊ทธ๋ฅ ๋ณต์ฌํด์๊ธฐ ๋๋ฌธ์ด์๋ค. Forkํ ๋ ํ์งํ ๋ฆฌ๋ ์๋ฌด๋ฆฌ ์ปค๋ฐํด๋ ์๋๊ฐ ์ฌ์ด์ง์ง ์๋๋ค๊ณ โฆ
โ [๋ฒ์ธ] ์๋์ ์๊ด์์ด ํธํ๊ฒ ๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ , jekyll ํ
๋ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
์ํ๋ jekyll ํ
๋ง์ ๊นํ๋ธ๋ก ๊ฐ์ Fork๋ฅผ ๋๋ฌ ๋ด ๋ ํ์งํ ๋ฆฌ์ ๋ค๊ณ ์จ ๋ค,
๋ ํ์งํ ๋ฆฌ ์ด๋ฆ(Repository name)์ ์ํ๋ ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค. (๋ณ๊ฒฝ์ Settings>General์์ Repository name์ ๋ฐ๊พธ๊ณ rename์ ๋๋ฅด๋ฉด ๋๋ค.)
๋ณดํต์ โuser-name.github.ioโ๋ก ์ด๋ฆ์ ์ค์ ํ๋ ๋ฏํ๋ค.
๊ธฐ๋ณธ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ฆฌ 3ํ, ํจ์์ ๋ฐฐ์ด
์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ฆฌ 2ํ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ(์กฐ๊ฑด๋ฌธ ๋ฑ)์ ์ ๋ฆฌํ๋ค.
๊ฒฐ๊ตญ ๋ฆฌ์กํธ(React)๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ด๋ค. ๋ฆฌ์กํธ๋ฅผ ์ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ(๊ธฐ๋ณธ)๋ฅผ ์ ๋ค๋ฃจ์ด์ผ ํ๋ค. ๋ฆฌ์กํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ณต์ตํ๋ ์ดํด๊ฐ ๋ ์ ๋๋ ๊ธฐ๋ถ์ด๋ค. ๋ฆฌ์กํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ํํ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ๋ ํด์ผ๊ฒ ๋ค. ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํด ์์ ์์ฌ๋ก ๋ด๊ฐ ์ํ๋ ๊ฒ์ ๋ง๋ค ์ ์๋ค๋ฉด ์ผ๋ง๋ ์ข์๊น, ์ผ๋ง๋ ํธ๋ฆฌํ ๊น. ๋ด๊ฐ ๋ฐ๋ผ๋ ๋ฏธ๋์ ๋ชจ์ต์ ๊ธฐ๋ํ๋ฉฐ ๊พธ์คํ ๊ณต๋ถํด ๋๊ฐ์ผ์ง. ๊นํ๋ธ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ 1์ผ 1์ปค๋ฐ์ ๋ค์งํ๋ฉด์ ์ฐ๋ ์ฒซ ๊ธ์ด ๊ธฐ๋ณธ ์๋ฐ์คํฌ๋ฆฝํธ๋ผ์ ๋ ๋ป๊น์ ๊ฒ ๊ฐ๋ค. ์ด๋ง ๊ฐ์คํ๊ณ , ๊ทธ๋์ ๋ฐฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ณด๊ธฐ ํธํ๊ฒ ์ ๋ฆฌํด์ผ์ง.