23.03.06(Mon) ~ 23.03.10(Fri)
- HTML
- flex, grid
- CSS
- BEM
- HTML, CSS ๋๋ฒ๊น
- branch, commit ์ฌ๋ฐ๋ฅธ ๋ถ๋ฆฌ
- ์ฝ๋ฉ ์ปจ๋ฐด์
- ์ฉ๋์ ๋ง๋ ์ฌ๋ฐ๋ฅธ semantic ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.(
div
,span
ํ๊ทธ๋ฅผ ๋จ๋ฐํ์ง ์๋๋ค.) - ๋์ผ๋ก ๋ณด๊ธฐ์๋ง ๊ฐ์ง๋ฐํ ๊ฒ ์๋, html/css ๊ธฐ๋ฅ์ ํตํด ํ์คํ๊ฒ
์ผ์ ํ ๊ฐ๊ฒฉ
์ ๊ฐ๊ฒ ํ๋ค. - DOM api๋ฅผ ๋ช ํํ ์๊ณ ์ฌ์ฉํ๋ค.
- readme ์์ฑํ๊ธฐ
- html ๋ ์ด์์ ๋ง๋ค๊ธฐ
- ์๋จ header ์์ญ
- 70rem(1120px) ๊ธฐ์ค width ๋ฐ์ํ
- ์ข์ธก ์ฌ์ด๋ ๋ฉ๋ด
- ๋ชจ๋ฌ
- ์ฐ์ธก ์๋จ: ๊ตญ๊ฐ, ๊ณ์ ๋ฐ ๋ชฉ๋ก
- ์์ง ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ฃ๋์ง ์์๊ณ ๋ฆฌ๋ทฐ ๋ฐ ํผ๋๋ฐฑ์ ๋ฐ๊ธธ ์ํ ๋ ์ค์ ํ๋ค.
- ์์ ์ ๊ณต์ ํ๊ณ ๋ค๋ฅธ ๊ธฐ์ฌ์๋ค๋ก๋ถํฐ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋ค.
- ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ฃ๋๊ธฐ ์ ์ ๊ฒํ ํ์ฌ, ํ๋ก์ธ์ค ์ด๊ธฐ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํ์ ํ ์ ์๋ค.
- ์์ง ๋ณํฉํ๋ฉด ์๋๋ PR์์ ๊ฐ์์ ์ผ๋ก ์ ์ ์๋ค.
- ์ฝ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๋ฉ ์คํ์ผ ์ฝ์
- ํนํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์ ์ฐํ ๋ฌธ๋ฒ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์๊ธฐ์ ๋์ฑ๋ ์ค์ํ๋ค.
- ๋ณดํต ESLint์ ๊ฐ์ ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ ๋ฆฐํฐ๋ก ๊ฒ์ถํ ์ ์๋ ๋ชจํธํ ๋ถ๋ถ์ ๊ฐ์ด๋๋ก ์์ฑํ๋ค.
- ์ฐธ๊ณ : Toast UI ์ฝ๋ฉ ์ปจ๋ฒค์
- clone ํ์ main ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ฉด ๋๋ค.(ํน์ ๋ชจ๋ฅด๋ ์ผ๋จ์ ๋๊ธฐ๋ก)
feature1 ๋ธ๋์น์์ ์์ ํ, pr์ ๋ ๋ฆฐ ์ํ์์ feature1์ ๊ธฐ๋ฐ์ผ๋ก feature2๋ฅผ ์์ ํด์ผํ๋ค. ์ด ๋, ์์ง feature1์ด ๋จธ์ง๊ฐ ์๋์๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น?
- feature1์์ feature2 ๋ธ๋์น๋ฅผ ๋ฐ์ ์์ ํ๋ค. ์ดํ feature1์ด main์ ๋จธ์ง๋๋ฉด ์์ฐ์ค๋ฝ๊ฒ feature2๋ main์์ ๋ฐ์จ ๊ฒ์ฒ๋ผ ๋๋ค.
- ์๋์ ๊ฐ์ด
:root
์ ๋ณ์๋ฅผ ์ค์ ํด์ค๋ค. - ์ค์ ํ ๋ณ์๋ฅผ
var(๋ณ์๋ช )
ํํ๋ก ์ฌ์ฉํ๋ค.
/* Global */
:root {
/* Color */
--color-white: #ffffff;
--color-gray-100: #eff2f2;
--color-gray-200: #e5e9e9;
--color-gray-300: #dce0e0;
--color-gray-400: #d5d5d5;
--color-gray-500: #c1c1c1;
--color-gray-600: #878787;
--color-gray-700: #535353;
--color-gray-800: #2a3648;
--color-gray-900: #1b232f;
--color-black: #10141a;
--color-black-tr40: rgba(16, 20, 26, 0.4);
--color-yellow-100: #fed15f;
--color-yellow-200: #febe30;
--color-yellow-300: #de9408;
--color-orange-100: #fcb057;
--color-orange-200: #ff9900;
--color-purple: #941387;
--color-navy: #074099;
--color-green: #0c5e72;
/* Font size */
--font-large: 48px;
--font-medium: 28px;
--font-regular: 18px;
--font-small: 16px;
--font-micro: 14px;
}
div {
color: var(--color-orange-100);
}
- ๊ธฐ๋ณธ์ ์ผ๋ก
content-box
๋ก ์ค์ ๋์ด์๋ค.- content-box: width, height๊ฐ padding ๋ด๋ถ์ content๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค.
- border-box: width, height๊ฐ content, padding, border๋ฅผ ํฌํจํ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
- reset css: ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ด์ฅ ์คํ์ผ์ ๋ชจ๋ ์ด๊ธฐํ
- ์ต๊ทผ์๋ new css reset์ด ์์ฃผ ์ฌ์ฉ๋๋ค.
- normalize css: ๊ฐ๋ฅํ ๋ธ๋ผ์ฐ์ ๋ค์ ๋ด์ฅ ์คํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์๋ ์ ์์ ๋ธ๋ผ์ฐ์ ๋ค ๊ฐ์ ์ฐจ์ด์ ์ ํต์ผ
- ๊ฐ์
h1
ํ๊ทธ๋ผ๋ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฌ๋ฐฑ์ ํฌ๊ธฐ๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅผ ์ ์๋ค. ์ด๋ฐ ๋ถ๋ถ์ ๋์ผํ๊ฒ ํต์ผํด์ค๋ค.
- ๊ฐ์
- ์์: ์์(๋ถ๋ชจ) ํ๊ทธ์ ์ ์ฉ๋ ์คํ์ผ์ด ํ์(์์) ํ๊ทธ์๋ ์์๋์ด ์ ์ฉ๋๋ ๊ฒ
- ๋ช๋ช ์์์ด ์๋๋ ์คํ์ผ์ด ์๋๋ฐ, ์ฃผ๋ก box-model๊ณผ ๊ด๋ จ๋ ์คํ์ผ์ด๋ค. ex) padding
- ์ ์ฉ ์ฐ์ ์์: css๋ ์ด๋ป๊ฒ ์คํ์ผ์ ์ ์ฉํ๋๋์ ๋ฐ๋ผ ๊ทธ ์ฐ์ ์์๊ฐ ๋ค๋ฅด๋ค.
- ์ฐ์ ์์๋ก๋
์ฌ์ฉ์ ์ค์
-inline style
-internal stylesheet
-external stylesheet
-browser default
๋ก ์ ์ ๋ฎ์์ง๋ค. - ๋ํ, css์
specificity
์ ๋ฐ๋ผclass
๋ณด๋คid
๊ฐ ์คํ์ผ์ ๋ํ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค.(๋์ฑ ์์ธํ ์ ํ์์ผ์๋ก ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค.)
- ์ฐ์ ์์๋ก๋
- (์ฃผ์) css์ ์์๊ณผ ์บ์ค์ผ์ด๋ฉ์ ์๋ฐํ ๋ค๋ฅธ ๊ฐ๋ !!!
- display๊ฐ flex๋ก ์ค์ ๋ ํ๊ทธ์ ์์ ํ๊ทธ๋ค์ ์ฌ์ฉํ๋ฉฐ, ๊ฐ ์์ ํ๊ทธ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก
flex-grow: 0;
์ด๋ค. - ๋ ๋์ ์ซ์๋ฅผ ์ค์ ํ๊ฒ ๋ ๋ค๋ฅธ ํ๊ทธ๋ค๊ณผ์ ์ฌ์ด์์ ํด๋น ์ซ์์ ํฌ๊ธฐ ๋น์จ์ ๊ฐ๋๋ค.
- em: ์์นํ ๊ณณ์ ๊ธฐ์ค์ผ๋ก font-size์ ๋ํ ๋ฐฐ์จ(ํด๋น ์์์ font-size ์์ผ๋ฉด ๋ถ๋ชจ ์์, ์์ผ๋ฉด ๋ ๋ถ๋ชจ ์์)
- rem: ์์นํ ๊ณณ๊ณผ ์๊ด์์ด ๊ฐ์ฅ ์ต์์ ์์(root; html ํ๊ทธ)์ font-size์ ๋ํ ๋ฐฐ์จ
- (์ฃผ์) em์ ๋๋ฌด ์๋์ ์ธ ๋๋์ด๊ณ rem์ ๊ทธ๋๋ง ์ ๋์ ์ธ root๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ์, rem ์ฌ์ฉ์ ์ข๋ ์ถ์ฒํ๋ค.
- (๋๋ง์ ํ) ์ ์ฒด์ ์ธ ๋ ์ด์์์ %๋ก ๋ง์ถ๋, ๊ทธ ์์ ๋ํ ์ผํ ๋ฐ์ค ํฌ๊ธฐ๋ rem์ผ๋ก ํด์ฃผ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค!
- Naver Coding Convention
- CSS BEM
- HTML elements & attributes
- Box-model: content-box vs border-box
- reset css๊ณผ normalize css
- css ์์(inheritance)๊ณผ ์ ์ฉ ์ฐ์ ์์(cascading)
- css media query
23.03.13(Mon) ~ 23.03.17(Fri)
- CSS
- SCSS, ๊ทธ ์ธ ๋ค๋ฅธ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- DOM api
- Vite ๋ฒ๋ค๋ฌ
- component
- vanilla extract
- DOM api๋ฅผ ๋ช ํํ ์๊ณ ์ฌ์ฉํ๋ค.
- ์ต๋ํ DOM ์กฐ์์์ ์์ ํ js ์ฝ๋๋ฅผ ์ง ๋ค.
- ๋ฆฌํฉํ ๋ง์ ๋ง์ ๊ณต์ ๋ค์ฌ๋ณด์!!!
- Mon: DOM api ๋ฐ Event delegation ํ์ต(์ฝ๋์ค์ฟผ๋ ์๋ฃ)
- Tue: ๋ฆฌํฉํ ๋ง ์งํ ๋ฐ vanilla extract ํ์ต
- Wed: ๋ฆฌํฉํ ๋ง ์์ ์ง์ค!!! ์๊ฒ๋ผ๋ component ์ด์ฌํ ๋๋๊ธฐ!!!
- Thu: ๋ฆฌํฉํ ๋ง ๋ฐ ์ ๋๋ฉ์ด์ ์์
- Fri: ๊ฐ๋ ๋ณต์ต ๋ฐ ๊ตฌํ ๋ํ ์ผ ์ด๋ฆฌ๊ธฐ
- readme ์์ฑํ๊ธฐ
- sidebar
- ํญ๋ชฉ ์ ๊ธฐ/ํผ์น๊ธฐ
- ํ์ ๋ฉ๋ด ์์ญ ๋ ธ์ถ
-
๋ฆฌํฉํ ๋ง
(๋ณ์๋ช , ํจ์ ๋ถ๋ฆฌ ๋ฑ)- css ํ์ผ ๋ถ๋ฆฌ
- class component
- vanilla extract ์ฌ์ฉํด๋ณด๊ธฐ
- DOM Tree๋ฅผ ํ์ํ๊ธฐ ์ํด JS๋ก ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ฉด ๋๋ฌด ํ๊ณ ๋ฒ๊ฑฐ๋กญ๋ค.
- ํด์ ๋ธ๋ผ์ฐ์ ์์ DOM Tree๋ฅผ ํ์ํ๊ธฐ ์ํ ๋ค์ํ DOM api๋ฅผ ์ ๊ณตํ๋ค.
- DOM์ ๋ ธ๋๋ค์ ๋๋ถ๋ถ text ๋ ธ๋์ element ๋ ธ๋๋ก ๋๋์ด์ง๋ค.
- firstChild, nextSibling ๋ฑ์ ํ๊ทธ ์ฌ์ด์ ๊ณต๋ฐฑ์ธ textNode๊น์ง ์ธ์ํ๋ค.
- firstElementChild, firstElementChild ๋ฑ์ textNode๋ฅผ ์ ์ธํ elementNode๋ง ์ธ์ํ๋ค.
- ์ฐ๋ฆฌ๋ ์ฃผ๋ก textNode๋ฅผ ์ด์ฉํ ์ผ์ด ์๊ธฐ ๋๋ฌธ์, ์ฃผ๋ก element๊ฐ ๋ค์ด๊ฐ api๋ฅผ ์ด์ฉํ๋ค.
- ์ฃผ๋ก ์ ์ ์ ํ๋์ ์ํด ๋ฐ์ํ๋ ์ฌ๊ฑด
- ex) click, scroll, mouseover, mouseenter ๋ฑ
- addEventListener์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์
- ๋ง ๊ทธ๋๋ก ์ด๋ค ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ฒ ๋์์ ๋, ์คํ๋๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
- Event Handler(์ด๋ฒคํธ ํธ๋ค๋ฌ)๋ผ๊ณ ๋ ํ๋ค.
- ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ๋ฆฌ์ค๋๋ฅผ ๋ฒ๋ธ๋ง(ํน์ ์บก์ณ๋ง)์ ์ด์ฉํด์ ์์ ํ๊ทธ์ ๋ฌ์์ ์ด๋ฒคํธ์ ๋ฐ๋ฅธ ํจ์๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ
- ๋ฒ๋ธ๋ง: ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์์ ์์ ์์๋ก ๊ฐ๋ ๋จ๊ณ
- ์บก์ณ๋ง: ์์ ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๋ก ๊ฐ๋ ๋จ๊ณ
- ์บก์ณ๋ง์ ์ฌ์ฉํ ์ผ์ด ๊ฑฐ์ ์๊ณ , ์ฃผ๋ก ๋ฒ๋ธ๋ง์ ํตํ ์ด๋ฒคํธ ์์์ ์ฌ์ฉํ๋ค.
- stopPropagation: ํน์ ํ๊ทธ์์ ์ด๋ฒคํธ์ ์ ๋ฌ์ ๋ง๋ api
- preventDefault: ํด๋น ํ๊ทธ๊ฐ ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๋ง๋ api
- a ๋ธ๋์น์์ b ๋ธ๋์น๋ฅผ ๋ฐ๊ณ ๋ก์ปฌ์์๋ง b ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋ฉด a ๋ธ๋์น๋ก ์ค์์น๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ด์ : commit์ ๊ธฐ์ค์ผ๋ก๋ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์์๊ณ , ๋ก์ปฌ์์ ์ํน ๋๋ ํ ๋ฆฌ์์๋ง ๋ณ๊ฒฝ์ด ์๊ธฐ ๋๋ฌธ์ b์์์ ๋ณ๊ฒฝ์ฌํญ ์ด a๋ก ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ์ง๋ค.
- ์ด ๋! stash ํน์ commit์ ํด์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ ์ ์๋๋ฐ, ์์งํ ์ปค๋ฐ์ ๊ธฐ๋ฅ ๋จ์๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ์ ํจ๋ถ๋ก commit์ ํ๊ธฐ ์ ๋งคํ๋ค.
- ์ด ๋ stash๋ฅผ ํตํด ์ต๊ทผ ์ปค๋ฐ ๊ธฐ์ค ๋ค์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ฐ๋ก ๋นผ๋๋ ๊ฒ์ด๋ค.
- ๊ทธ๋ ๋ค๋ฉด ์ธ์
๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ ์ commit ํน์ stash๋ฅผ ํ๋ผ
๋ ์๋ฌ๊ฐ ๋ฐ์ํ ๊น? - a ๋ธ๋์น์์ b ๋ธ๋์น๋ฅผ ๋ฐ๊ณ b ๋ธ๋์น์์ ์์ ์ ํ ๋ค ์ปค๋ฐ์ ํ๋ค. ๊ทธ๋ฌ๊ณ ๋์ ๋๋ค์ ๋ก์ปฌ(์ํน ๋๋ ํ ๋ฆฌ)์์ ์์ ์ ํ๊ณ a๋ก ์ฎ๊ธฐ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
- ์ด ๋, stash๋ก ๋ณ๊ฒฝ์ฌํญ์ ์ ๊น ๋นผ๋๋ ๊ฐ ์๋๋ฉด ๋๋ค์ ์ปค๋ฐ์ ํด์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๊ณ ์ฎ๊ธฐ๋ฉด ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์์๋ html ํ์ผ๋ค์ ์์๋ค์ด ์ต์ ํ๋์ด ๊ณต๋ฐฑ์์ด(textNode๊ฐ ์์ด) ์ ๋ฆฌ๋๋ค.
- ํด์ firstChild๋ก textNode๊ฐ ์์ฐํ๊ธฐ๋ ํ๋ค!
- ํ ํ๋ฆฟ ์์๊ณผ ํน์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ฐ๋ฅธ ์ ๋ ฅ ์๋ฃ๋ฅผ ํฉ์ฑํ์ฌ ๊ฒฐ๊ณผ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ ์ํํธ์จ์ด(๋๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ). ๊ทธ๋ฅ ํ ํ๋ฆฟ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์ง์ ๋ ํ ํ๋ฆฟ ์์์ ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ ธ์ html ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ ์ํํธ์จ์ด ์ฆ, ํ๋ฉด์ ์ด๋ป๊ฒ ๋ง๋ค์ง ๋์์ฃผ๋ ์์์ด๋ค.
- ๊ทธ์ ์ด๋ฆ์ ํ ํ๋ฆฟ ์์ง์ด๋ผ๊ณ ๋ถ์ฌ์ ์กฐ๊ธ ํท๊ฐ๋ฆฐ๋ค.
- Handlebars, Mustache ๋ฑ์ด ์๋ค.(๋๊ฒ ๋ณด๋ฉด react, vue ๋ฑ๋ ํ ํ๋ฆฟ ์์ง์ด๋ค.)
23.03.20(Mon) ~ 23.03.24(Fri)
- ์ ๋๋ฉ์ด์ ์๋ฆฌ
- ๋ ์ด์์, ํ์ธํธ, ์ปดํฌ์งํธ
- Sass
- ์บ๋ก์ (๋ฌดํ ์ฌ๋ผ์ด๋)
- OOP
- CSS ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ๋ฌด์์ธ์ง ํ์คํ ๊ณต๋ถํ์
- Sass, Scss์ ๋ํด์ ๊น์ด ์๊ฒ ๊ณต๋ถํ๊ณ ๋ฌด์กฐ๊ฑด ์ฐ๋ ๊ฒ ์ข์๊ฑด์ง ์๋ฌธ์ ๊ฐ์
- ๋ธ๋ผ์ฐ์ ๊ฐ html, css, js๋ฅผ ์ฝ๊ณ ํ์ด์ง๋ฅผ ๊ทธ๋ฆฌ๊ธฐ๊น์ง์ ๊ณผ์ ์ ์ค๋ช ํ ์ ์์ ์ ๋๋ก ๊น๊ฒ ์๊ธฐ
- ํ๋ก ํธ์๋์๊ฒ ์์ด OOP๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๋ฉด ๋ ์ง ๊ณ ๋ฏผํด๋ณด๊ธฐ
- ๋ฌดํ ์ฌ๋ผ์ด๋๊ฐ ๋๋ ์บ๋ก์ ๊ตฌํํ๊ธฐ
- Mon: ํ์ต ๊ณํ ์์ฑ ๋ฐ ๊ฐ๋ ๊ณต๋ถ ์ ๋ฆฌ, ์ ๋ฒ์ฃผ ๋ชปํ ๋ถ๋ถ ์ต๋ํ ๋ง๋ฌด๋ฆฌ
- Tue: ์ต๋ํ ๋ฆฌํํ ๋งํ ์ ์๋ ์ฝ๋ ๋ฆฌํํ ๋งํด๋ณด์
- Wed: ์บ๋ก์ ์ ๋ํด ๊ณต๋ถํ๊ณ ์ผ๋จ ์ ํํ ์บ๋ก์ ๊ตฌํํ๊ธฐ
- Thu: ๋ฌดํ ์ฌ๋ผ์ด๋๋ก ์บ๋ก์ ๊ตฌํํด๋ณด๊ธฐ
- Fri: ๊ฐ๋ ๋ณต์ต ๋ฐ ๋ชป๋คํ ๊ตฌํ, ์ฝ๋ ์ ๋ฆฌ
- readme ์์ฑํ๊ธฐ
- ํ์ต ๋ด์ฉ ์ ๋ฆฌ ๋ฐ ๊ฐ๋
๊ณต๋ถ
- Sass
- ์ ๋๋ฉ์ด์
- ์น ํ์ด์ง ๋ ๋๋ง ๊ณผ์
- ํ๋ก ํธ์๋์ OOP ๊ทธ๋ฆฌ๊ณ prototype
- ์บ๋ก์ + ๋ฌดํ ์ฌ๋ผ์ด๋
- ์ง๋๋ฒ ๋ชป๋คํ ๋ด์ฉ
- ์ฌ์ด๋๋ฐ ์์ฑ
- ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌ
- ๊ตฌํ ์๊ฐ์ ์ธ ๋ถ๋ถ ๋ํ ์ผ ์ด๋ฆฌ๊ธฐ
- ์บ๋ก์
๊ตฌํ
- ์ ํ ์ฌ๋ผ์ด๋
- ๋ฌดํ ์ฌ๋ผ์ด๋
- ์ ์ฒ๋ฆฌ๊ธฐ๋ง์ ๋ฌธ๋ฒ์ ๋ํ CSS ๋จธ๋ ์ ๋๋ก ์๊ฐํ๋ฉด ๋๋ค.
- CSS๊ฐ ๊ฐ๋ ๋ถ๋ฆฌํ ์ ๋ค์ ๋ณด์ํ๊ธฐ ์ํจ์ด๋ฉฐ ๋๋ถ๋ถ CSS๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.(๋ณ์, ํจ์, ์กฐ๊ฑด๋ฌธ ๋ฑ)
- ๊ฒฐ๊ตญ CSS์ ๋ํ ์ํผ์ (ํ์ฅ์ )์ด๊ธฐ ๋๋ฌธ์ CSS๋ก ์ปดํ์ผ๋์ด์ผ๋ง ํ๋ค.
- Sass์ ๋ฒ์ 3๋ถํฐ CSS์ ์ข๋ ๊ฐ๊น์ด ๋ฌธ๋ฒ์ธ Scss๊ฐ ๋ฑ์ฅ
$jayden-color: #111111;
.button {
background-color: $jayden-color;
}
// CSS
.container {
margin-top: 10px;
}
.container .item {
padding: 10px;
}
// Sass
.container {
margin-top: 10px;
.item {
padding: 10px;
}
}
- css์์์ ํจ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ณ์๋ $๋ก ๋ง๋ค์ด์ ์ ๋ฌํ ์ ์๋ค.
@mixin jayden-styles($flexDirection: row, $backgroundColor: #000000) {
display: flex;
flex-direction: $flexDirection;
justify-content: space-between;
align-items: center;
background-color: $backgroundColor;
}
.jayden-box {
@include jayden-styles(column, #ffffff);
}
- ํ์ ์คํฌ๋ฆฝํธ์ ํด๋์ค ์์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ. ๊ทธ๋ฌ๋ css media-query ๋ด์์ ์คํ๋์ง ์์ผ๋ฉฐ Sass ๊ฐ์ด๋๋ผ์ธ์์๋ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค.
.a {
padding: 1rem;
}
.b {
@extend .a;
background-color: tomato;
}
- ์ธ๋ถ์ ๋ชจ๋ํํด์ ๋ถ๋ฆฌํด ๋์ Sass ํ์ผ์ ๋ถ๋ฌ์ ๋ณํฉํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.(js์ ๋ชจ๋์ฒ๋ผ)
CSS @import๋ ์ฌ์ฉํ ๋๋ง๋ค ๋งค๋ฒ http ํธ์ถ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ ์ ํ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๊ทธ๋ฌ๋ Sass @import๋ CSS๋ก ์ปดํ์ผํ์ฌ ๋ฐ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ http ํธ์ถ์ด ํ์ํ์ง ์์ ์๋ ์ ํ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค.
- ๋ณดํต ๋ณ์์ @mixin์ ๋ฐ๋ก Sass ๋ชจ๋ ํ์ผ๋ก ๋ง๋ค๊ณ @importํ์ฌ ์ฌ์ฉํ๋ค.
- ์ด ๋, ํ์ผ๋ช
์์
_
๋ฅผ ๋ถ์ด๋ฉด CSS๋ก ์ปดํ์ผ ๋์ง ์๋๋ค. - ์๋ฅผ ๋ค์ด
_mixin.scss
,_header.scss
ํ์ผ๋ช ์ ๋ง๋ค๊ณ , ์ฃผ ํ์ผ์์ @import ํ๋ฉด 2๊ฐ(_mixin.scss
,_header.scss
)์ ํ์ผ ๋ด์ฉ์ ์ฃผ ํ์ผ์ ์ ์ฉ๋์ง๋ง_mixin.scss
,_header.scss
ํ์ผ์ css๋ก ์ปดํ์ผ ๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ํธ๋ฆฌํด์ง๋ค.
- ํ๋์ @import๋ก ์ฌ๋ฌ ํ์ผ์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
- ์ด ๋, ํ์ผ๋ช ์ผ๋ก๋ง @importํด๋ ์์์ ํ์ฅ์๋ .scss์ธ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ์๋ถ์ฌ๋ ๋๋ค.(์ฃผ์: css ํ์ผ์ @import ์ .css๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค.)
@import '_aaa', '_bbb';
23.03.27(Mon) ~ 23.04.01(Fri)
- fetch
- Promise
- ๋น๋๊ธฐ ํต์
- ๋น๋๊ธฐ ๋คํธ์ํฌ API
- ๊ฒ์์ฐฝ(๊ตฌํ)
- ๋น๋๊ธฐ ํต์ ์ ๋ํ ๊ฐ๋ ์ ํ์คํ ์ก์
- fetch api๋ฅผ ๊น๊ฒ ๊ณต๋ถํ๊ณ ํ์ฉํด๋ณด์
- Promiseํจํด์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๊ธฐ
- mock server์์ ์ฐ๋
- (๋ ๋์๊ฐ๋ณด๊ธฐ) nodejs express๋ก ๊ฐ๋จํ ์๋ฒ ๋ง๋ค์ด๋ณด๊ธฐ(๊ณ ๋ฏผ)
- Mon: ํ์ต ๊ณํ ์์ฑ ๋ฐ ๊ฐ๋ ๊ณต๋ถ ์ ๋ฆฌ, ๋ฆฌํฉํ ๋ง
- Tue: ๊ฐ๋ ๊ณต๋ถ ๋ฐ ๊ฒ์์ฐฝ ๊ตฌํ ์์(์ค๊ณ)
- Wed: Node.js(express) ์๋ฒ ๊ณต๋ถ(๋ณ๊ฒฝ ๊ฐ๋ฅ)
- Thu: ๊ฐ๋จํ ์๋ฒ ๊ตฌํ ๋ฐ ๊ฒ์์ฐฝ ๊ตฌํ(๊ณ์)
- Fri: ๊ฐ๋ ๋ณต์ต ๋ฐ ๋ชป๋คํ ๊ตฌํ, ์ฝ๋ ์ ๋ฆฌ
- readme ์์ฑํ๊ธฐ
- ํ์ต ๋ด์ฉ ์ ๋ฆฌ ๋ฐ ๊ฐ๋
๊ณต๋ถ
- ๋น๋๊ธฐ ํต์
- fetch api(+ axios๋ ๊ณต๋ถ(์์ ))
- HTTP ๊ณต๋ถ ๋ฐ ๋ณต์ต
- ๋น๋๊ธฐ ํต์
- ์ง๋๋ฒ ๋ชป๋คํ ๋ด์ฉ
- ๋ฆฌํฉํ ๋ง(๊ฐ๋จํ ๋ถ๋ถ์ ์๋ฃ, ์งํํ๋ฉด์ ๋ ๋ค๋ฌ๊ธฐ)
- ์๊ฐ์ ์ธ ๋ถ๋ถ ๋ํ ์ผ
- ๊ตฌํ์ฌํญ
- ๊ฒ์์ฐฝ ๊ตฌํ
- ์ถ์ฒ ๊ฒ์์ด ํ์ถ
- ์ต๊ทผ ๊ฒ์์ด ํ์ถ
- ๊ฒ์์ด ์
๋ ฅ ์ ์ผ์นํ๋ ์ํ ํ์ถ
- ๊ฒ์์ฐฝ ์๋์์ฑ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ฐ๋ํด์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์ ํ์ฉ
- get ์์ฒญ(request) query๋ฅผ ๋ณด๋ด ์๋ต(response)์ ๋ฐ๋๋ค.
- ํค๋ณด๋๋ฅผ ํตํ ๊ฒ์์ด ์ ํ
- nodejs express๋ก ๊ฐ๋จํ ์๋ฒ ๊ตฌํ
- ๊ฒ์์ฐฝ ๊ตฌํ
- ๋์์ ์ผ์ด๋๋ค๋ ์๋ฏธ๋ก, ์ฌ๊ธฐ์ ๋์์ ์ผ์ด๋๋ค๋ ๊ฒ์
์์ฒญ
๊ณผ๊ฒฐ๊ณผ
๊ฐ ๋์์ ์ผ์ด๋๋ค๋ ์๋ฏธ - ์์ ์ฝ๋๊ฐ ์์ง ์คํ ์ค์ด๋ผ๋ฉด ๊ทธ ์คํ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผํ๋ค.(๋ธ๋กํน)
- ์ค๊ณ๊ฐ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ง์ด๋ค.
- ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ์๋ฏธ๋ก, ์ฌ๊ธฐ์ ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ๊ฒ์
์์ฒญ
๊ณผ๊ฒฐ๊ณผ
๊ฐ ๊ฐ์ ์๋ฆฌ์์ ๋์์ ์ผ์ด๋์ง ์์์ ์๋ฏธ - ๋๊ธฐ๋ณด๋ค ๋ณต์กํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ทธ ์๊ฐ์ ๋ค๋ฅธ ์์ ์ ํ ์ ์์ด, ์๊ฐ์ ์ผ๋ก ์ข๋ ํจ์จ์ ์ด๋ค.
setTimeout(() => console.log('๋น๋๊ธฐ์
๋๋ค.'), 10000);
setTimeout์ ๋ธ๋ผ์ฐ์ ์ V8 ์์ง ์์ฒด์ ๋ด์ฅ๋์ด์๋ ํจ์๊ฐ ์๋๋ค. ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ api์ธ WEB API ์ค ํ๋์ด๋ค. ์คํ๋๋ฉด 10000ms ์ฆ, 10์ด ๋ค์ cb(callback) ํจ์๋ฅผ ์คํํด๋ฌ๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฑ๋ก๋๊ณ 10์ด ๋ค์ cb๊ฐ ์คํ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ฐ๋ ๋ ๊ธฐ๋ฐ์ด๋ฉฐ ๋
ผ ๋ธ๋กํน ๋ฐฉ์์ ๋น๋๊ธฐ์ ์ธ ๋์์ฑ ์ธ์ด์ด๋ฉฐ ์ฝ ์คํ, ์ด๋ฒคํธ ๋ฃจํ์ ์ฝ๋ฐฑ ํ ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ค๋ฅธ API๋ค์ ๊ฐ์ง๊ณ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ฐ๋ ๋์ด์ง๋ง, ์คํ๋๋ ํ๊ฒฝ(๋ธ๋ผ์ฐ์ , nodejs ๋ฑ)์์ ์ ๊ณตํ๋ event loop, callback queue๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ์๋ํ ์ ์๋ค.
- ์ด์ ์๋ ์ฃผ๋ก XML ํ์์ผ๋ก ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค. ํ์ง๋ง ์ดํ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ ๋ฐ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ฒจ๋๋ฉด์ JSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๊ฒ ๋์๋ค.
- ์ฌ์ค์ XML์ ์ด์ ๊ฑฐ์ ์ ์์ฐ์ด๊ณ ์์ผ๋ฉฐ, JSON ํํ๋ฅผ ๊ฑฐ์ ํ์ค์ฒ๋ผ ์ฌ์ฉํ๊ณ ์๋ค. ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋๋ ๋ฐ์ ๋ ๋ชจ๋ JSON ํํ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๊ธฐ์กด์๋ XMLHTTPRequest ๊ฐ์ฒด๋ฅผ ํตํด ๋น๋๊ธฐ ๋ฐ์ดํฐ ํต์ ์ ์งํํ์๋ค.
- ์ ์ ๋น๋๊ธฐ ์์ฒญ์ด ๋ ๋ณต์กํ๊ณ ์ฆ๊ฐ๋๋ฉด์, ๋น๋๊ธฐํต์ ๋ก์ง์ ๋ณด๊ธฐ ์ข์ ํจํด์ด ์ ์ฉ๋๊ณ ์๋ค.
- fetch api๋ ํ๋ก๋ฏธ์ค ํจํด์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ๋ก์ง์ ์ข๋ ๋๊ธฐ์ ์ผ๋ก ๋ณด์ด๊ฒ๋ ํด์ค๋ค.(๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ค.)
- Promise ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐ์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ฃผ๋ ํจํด์ด๋ค.
- Promise.all(): ๋ชจ๋ Promise ๊ฐ์ฒด๊ฐ fulfilled๋๋ฉด resolveํ ๊ฐ๋ค์ ๋ฐฐ์ด์ ๋ฐํ. ๋จ, ํ๋๋ผ๋ ์๋ฌ ๋ฐ์ ์ ์ฆ์ rejectํ ๊ฐ ๋ฐํ.
- Promise.allSettled(): fulfilled์ rejected ์๊ด์์ด ๋ชจ๋ Promise ๊ฐ์ฒด๊ฐ settled๊ฐ ๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ค๋ค.
- Promise.race(): fulfilled๋ rejected๋ ๊ทธ์ ๊ฐ์ฅ ๋จผ์ settled๋ ๊ฐ์ ๋ฐํํ๋ค.
- Promise.any(): ๋จผ์ ์ฒ๋ฆฌ๋ ์ํ๋ค ์ค์์ fulfilled์ธ ์ํ๋ง ๋ฐํํ๋ค.(๋ง์ฝ ๋ชจ๋ Promise์์ fulfilled๊ฐ ์๋ค๋ฉด
AggregateError
๋ฐ์)
- Promise๋ฅผ ํตํด resolve์ reject ํจ์๋ฅผ ์คํ์ํฌ ์ ์๋ค.
- ์ด ๋, ์ด๋ค ๊ฐ์ resolveํ๊ฒ ๋๋ฉด ๊ทธ ๋ ์ฐ๋ฆฌ๋ ๊ทธ ๊ฐ์ then์ ๋ด๋ถ ์ฝ๋ฐฑํจ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ๋ก์ง์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ข ๋จ์ํ๊ฒ ์๊ฐํด๋ณด์๋ฉด,
then(cb)
๋ฅผ ํตํด์ ์ฐ๋ฆฌ๋resolve
๊ฐ ๋ฐ์ํ์ ๋(์ด๋ฒคํธ ๊ฐ๋ ), then์ผ๋ก ์ ๋ฌํcb
๋ฅผ resolve๋ก ์ ๋ฌํ ๊ฐ๊ณผ ํจ๊ปmicro task queue
์ ๋ณด๋ด๊ฒ ๋๋ค.