๋ชฉ์ฐจ
1. ์ฑ๋ฆฐ์ง ํ๊ธฐ
2. ๊ฐ์์๊ฐ
3. ์ฑ๋ฆฐ์ง์๊ฐ
4. ์ ์ตํ๋ ๊ธฐ๋ฅ
1. ์ฑ๋ฆฐ์ง ํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฆฐ์ง๊ฐ ๋๋ฌ๋ค...!!!!!
์ฑ๋ฆฐ์ง ๋ ๋ฒ์งธ ๋ ๋ ธ๋ง๋ ์ฝ๋ ์ฑ๋ฆฐ์ง๊ฐ ์์๋๊ฑธ ๊น๋จน์ด์ ํ๋ฃจ๋ฅผ ๋นผ๋จน์๋ค <์๋ ์ด๋ป๊ฒ ์ด๋ด ์๊ฐ ๊ทธ๋ด ์ ์๋๋ผ๐คทโ๏ธ
๊ทธ๋๋ ๋๊น์ง ์์ฃผํ๋ค.
์ด์ ์๋ ์ ์ฒญํ ์ ์ด ์์๋๋ฐ ๊ณ์ ์คํจํ๋ค๐
๊ฒ์ผ๋ฆ๋ฑ
์ด ์ธํ์ ๋จธ๋ฆฌ๋ง ๊ตด๋ฆฌ๊ณ ์์ง์ด์ง ์์๋ค (์ ๋นํฐ์์ด ํํ์ง ๋ง๋ผ)
๋์ฝ์์ด ์ค๋ช ํด์ฃผ๋ ๊ฐ์๋ ์ฌ๋ฐ๋ค.
์ฌ๋์ด ์ฌ์ ๋กญ๊ณ ๋ชธ์ ์ ๋จธ๊ฐ ๋ฐฐ์ด์๋ค.
์์ด๋ก ๊ฐ์ํด์ ๊ทธ๋ฐ๊ฐ ์์ ๋ก์ด ๋๋, ํ๋ก๊ทธ๋๋จธ ๋ ๋๋. <? ๐คทโ๏ธ
๋ฐ๋ณตํด์ ์๋ ค์ฃผ๋๋ฐ ์ด ๋ถ๋ถ๋ ์ข์๋ค.
๊ฐ์ ๋ค์ ๋๋ ๊ณ ๊ฐ ๋๋์ด๋ค๊ฐ ๋ค๋์์๋ฉด ๊น๋จน๋ ๊ฒ ์ผ์ด๋.
๋ง์ง๋ง์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํด์ฃผ๋ ์๊ฐ์ ๊ฐ๋ ์ ์ ๋ฆฌํ๊ณ
์๋ก ๋ฐฐ์ด ๊ฒ์ ์ฌ์ํ ์ํค๋ ์ฆ๊ฑฐ์ด ์๊ฐ ๋์๋ค๐
(์๋ ํ๋ฒ ์ํ์ํค๋ ค๊ณ ๋์๊น์ง 4๋ฒ ํ๋ค๊ณ ํ๋
์์ฒ๋ผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ๋์ฝ ์์ฒ๋ผ ์ฌ์ ๋ก์์ง๊ฒ ์ง)
๊ฑฐ๊ธฐ๋ค ์์ด ๋ฃ๊ธฐ ๊ณต๋ถ๋ ๋๋ฆ ๋๋ค๊ณ ์๊ฐํ๋ค..!
๋ค๋ฅธ ๊ฑฐ ๊ณต๋ถํ๋ค๊ฐ ์ฑ๋ฆฐ์ง ์๊ฐ์ด ๋๋ฉด ๋ง์์ด ๊ธํด์ ธ์
๋ฐฐ์์ผ๋ก ํ๊ฑฐ๋ ์๋ง์ ์ ๋๋ก ๋ชป ๋ณด๊ณ ๊ท๋ก ๊ทธ๋ฅ ๋ค์ ๋๊ฐ ์ ๋ฒ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ฆ ์ผ์์ด์กฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค ๐
๋์ค์ ๋ณด๋๊น ์ฐ์์กธ์ ์๋ก ์ ์ ๋์ด์์๋ค.
ํํํ... ๋ถ๋๋ฝ์ง๋ง ๊ธฐ๋ถ์ ์ข๋ค.
2. ์ฑ๋ฆฐ์ง ์๊ฐ
๋ฐ๋๋ผ JS์ฑ๋ฆฐ์ง - ๋ ธ๋ง๋ ์ฝ๋(Nomad Coders)
โ๏ธ ๊ธฐ๊ฐ : 2์ฃผ
โ๏ธ ๋ชจ์ง์ผ : ์ 1ํ
์ฑ๋ฆฐ์ง๋ฅผ ์ฑ๊ณตํ๋ฉด ์์ ๋์์๋ ์ฑ๋ฆฐ์ง ์๋ฃ์ฆ๊ณผ ํจ๊ป 10% ํ ์ธ์ฟ ํฐ์ ์ฆ์ ํ๋ค.
์์ธํ ์ฌํญ์ ์์ ๋งํฌ๋ฅผ ๋ค์ด๊ฐ ๋ณด๋ฉด ์ ์ ์๋ค.
HTML, CSS์ ๊ธฐ์ด์ ์ธ ์ง์์ด ์์ผ๋ฉด ์ข๋ค.
๊ฐ์ ์๊ฐ๋์์๋ ๋ฏธ๋ฆฌ ์ตํ๋๊ณ ์ค๊ธฐ๋ฅผ ๊ถํ๊ณ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ์๋ ค์ฃผ๊ธฐ ๋๋ฌธ์ ์คํ์ผ์ ์ธ ๋ถ๋ถ์ ์ค์ค๋ก ๊ตฌํํด์ผ ํ๋ค.
๊ทธ๋์ ๋ฅ๋์ ์ธ ํ์ต์ด ๊ฐ๋ฅํ๋ค.
์ํ๋ ์คํ์ผ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด ์ด์ฌํ ๋จธ๋ฆฌ๋ฅผ ์ฐ๊ฒ ๋๋ค.
3. ์ ์ตํ๋ ๊ธฐ๋ฅ
1) event.preventDefault()
๋ธ๋ผ์ฐ์ ๋ด์์ ์ผ์ด๋๋ ๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์คํํ์ง ์๋๋ก ์ง์ ํ๋ ๋ฉ์๋
See the Pen ์์ 1 by hong (@hong99cone) on CodePen.
๊ธฐ๋ณธ์ ์ผ๋ก input์ checkbox๋ ๋ธ๋ผ์ฐ์ ์์์ ๋น์ด์๋ ๋ค๋ชจ ๋ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด ์ฒดํฌ๋๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฒดํฌ๋ฐ์ค๊ฐ ํด๋ฆญ๋์ ๋์ eventDeafault()๋ฅผ ์ฐ๊ฒ ๋๋ฉด
๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ ๋์์ด ์คํ์ด ๋์ง ์์์ ์์ ์์ ๋ฅผ ํตํด ์ ์ ์๋ค.
์ฒดํฌ๋ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ์ค์ ์ฒดํฌํ์๊ฐ ๋ํ๋์ง ์๋๋ค.
ํฌ๋ ๋ฆฌ์คํธ์์๋ input์ ๋ค์ด๊ฐ ์๋ value๋ฅผ submit ํ๊ฒ ๋๋ฉด
๋ธ๋ผ์ฐ์ ๊ฐ ์๋ก๊ณ ์นจ ๋๋ ๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
localStroage๋ฅผ ์ด์ฉํ๊ธฐ ์ ์๋ก๊ณ ์นจ์ด ์ผ์ด๋ ์ ๋ ฅ๋ ๊ฐ๋ค์ด ์ ๋ถ ์ฌ๋ผ์ก๋ค.
๋ฐ๋ผ์ ์ด๋ฒคํธ ๋ฐฉ์ง๋ฅผ ์ํด eventDefault()๋ฅผ ์ฌ์ฉํ๋ค.
์ฌ๋์ด ๋ง๋ค์๋ค ๋ณด๋๊น ๋ญ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธํ ๋์ด ์๋ ๊ฒ ๋น์ฐํ๋ค.
์ปดํจํฐ๋ ์ ๋๋ฆฌ์๊ฒ ๊ธฐ๋ฅ์ ํ์ด์ฃผ์ง ์๋๋ค. ์๋ ค์ค์ผ ํ๋ค.
2) localStorage
document์ Storage ๊ฐ์ฒด์ ์ ๊ทผ
Storage : WEB API์ ์ธํฐํ์ด์ค๋ก ํน์ ๋๋ฉ์ธ์ ์ํ ์ธ์ ์ ์ฅ์ ๋๋ ๋ก์ปฌ ์ ์ฅ์์ ์ ๊ทผ ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ ์ ์๋ค.
// Storage ๊ฐ์ฒด์ ์ ๊ทผํด ํญ๋ชฉ์ ์ถ๊ฐํ ๋
localStorage.setItem('todos' , 'go to the gym')
// Storage ๊ฐ์ฒด์ ์ ๊ทผํด ํญ๋ชฉ์ ์ฝ์๋
localStorage.getItem('todos')
// Sotrage ๊ฐ์ฒด์ ์ ๊ทผํด ํญ๋ชฉ์ ์ญ์ ํ ๋
localStorage.removeItem('todos')
// ํญ๋ชฉ ์ ์ฒด ์ ๊ฑฐ
localStorage.clear();
ํญ๋ชฉ์ ์ถ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์์์ ํ์ธํ ์ ์๋ค.
(์ฌ์ฉํ ๋ธ๋ผ์ฐ์ ๋ firefox๐ฆ์ ๋๋ค)
์์ DB๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค.
๋ธ๋ผ์ฐ์ ๋ฅผ ์์ ํ ์ข ๋ฃํ์ง ์๋ ์ด์ ์๋ก๊ณ ์นจ์ ํด๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์๋๋ค.
localStorage๋ฅผ ์ด์ฉํด์ ๋ก๊ทธ์ธ์ ํ username๊ณผ ์ถ๊ฐํ todos ๋ด์ฉ์ ์ ์ฅํ๋ค.
3) ๋ฐ๋ณต์ฌ์ฉ string๊ฐ ๋ณ์์ ์ธ
์ฝ๋๋ฅผ ์ฐ๋ค ๋ณด๋ฉด string์ผ๋ก ๋ฐ๋ณตํด์ ์ฌ์ฉ๋๋ ๊ฐ๋ค์ด ์์๋ค.
localStroage์ ์ ๊ทผํด์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฝ์ ๋์๋ค.
// Storage ๊ฐ์ฒด์ ์ ๊ทผํด ํญ๋ชฉ์ ์ถ๊ฐํ ๋
localStorage.setItem('todos' , 'go to the gym')
์คํ๊ฐ๋์ง ์๋๋ค๋ ์ ์ ํ์ ์์ ์ฝ๋์ฒ๋ผ 'todos'์ธ string๊ฐ์ ์จ๋ ์๊ด์๋ค.
const TODOS_KEY = 'todos';
// Storage ๊ฐ์ฒด์ ์ ๊ทผํด ํญ๋ชฉ์ ์ถ๊ฐํ ๋
localStorage.setItem(TODOS_KEY , 'go to the gym')
ํ์ง๋ง! string ๊ฐ ์ ์คํ๊ฐ ์๋ค๋ฉด ์ด๋ค ์ค๋ฅ์์ด ๊ธฐ๋ฅ์ด ์๋๋์ง ์๋ ๋ช์ ๋น ์ ธ๋ฒ๋ฆฌ๋ ์ผ์ด ์ผ์ด๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก string๊ฐ์ ๋ณ์๋ก ์ ์ธํ๋ค๋ฉด ์คํ๊ฐ ์๊ธธ ์ error๋ฅผ ํตํด ์ฝ๊ฒ ๋๋ฒ๊น ์ด ๊ฐ๋ฅํด์ง๋ค.
string๊ฐ์ ๋ณ์๋ก ์ ์ธํ ๋๋ ๋ณ์๋ฅผ ๋๋ฌธ์๋ก ํ๋ค.
์ด์ ๋ ์๋ค. ๊ทธ๋ ๊ฒ ์ฝ์๋์ด์๋ค๊ณ ํ๋ค
๋ค๋ฅธ ๋ณ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋ผ๊ณ ์ถ์ถ ํด๋ณธ๋ค.
4) JSON
์ธ๊ตญ์ธ ์ด๋ฆ ๊ฐ์ด ์น๊ทผํ JSON์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ํฌ๋งท์ด๋ค.
localSotrage์ ์ ๋ ฅ๋ฐ์ ๊ฐ์ string ์ ์ฅํ๊ณ ๋ค์ ๋ฐฐ์ด๋ก ๊บผ๋ด์ฌ ๋ ์ฌ์ฉํ๋ค.
// ๋ฐฐ์ด์ ์ ์ฅ๋์ด ์๋๊ฐ์ localStorage์ ์ ์ฅํ ๋
let toDos = ['go to the gym', 'eat breakfast'];
localStorage.setItem('toDos', JSON.stringfy(toDos));
// localStorage์ ์ ์ฅ๋์ด ์๋ string๊ฐ์ ๋ฐฐ์ด๋ก ๊บผ๋ด์ฌ๋
JSON.parse(localStorage.getItem('toDos'));
JSON์ ์์ง ์ฌ์ฉ์ด ๋ฏธ์ํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ค๋ ์ ๊ณผ string์ผ๋ก ๊ฐ์ ๋ณํํ๊ณ
key์ value๋ก ๊ฐ์ ๋ณํํ ์ ์๋ค๋ ์ ์ ์ค์ ์ ์ผ๋ก ๊ธฐ์ตํ๊ณ ์ฌ์ฉํ๋ค.
++++ ๋ํ๊ณ ์ถ์ ๋ง)
์ฑ๋ฆฐ์ง๋ฅผ ํ๋ค ๋ณด๋ฉด ์ด๋ฐ ์๊ฐ๋ค์ด ๊ฝค ๋ง์๋ค.
๋ญ์ง.. ์ด๊ฑฐ ์ด๋ป๊ฒ ํ๋ ๊ฑฐ์ผ....
๊ทธ๋ด ๋๋ฉด ์์ฃผ ์ ์ฉํ๊ฒ ๋์์ด ๋๋ ์ปค๋ฎค๋ํฐ๊ฐ ์๋ค!
๋ฐ๋ก ์ฌ๋!!!!
๋ ธ๋ง๋ ์ฝ๋ ์ฌ๋์ ๊ฐ์ ํด ์ด๋ ค์์ ๊ณต์ ํ๋ฉด
์น์ ํ ์ฑ๋ฆฐ์ ๋ค์ด ์๋ ค์ค๋ค.
์ ๊ทน ํ์ฉํ์.
๋ชจ๋ฅด๋ฉด ๋นจ๋ฆฌ ๋ฌผ์ด๋ณด๋ ๊ฒ ์ ์ผ์ด๋ค.
์ฌ๋ ์ฌ์ฉ๋ฒ์ ์๋ ๋งํฌ๋ฅผ ํตํด ํ์ธํ์
์ฑ๋ฆฐ์ง๋ฅผ ๋ค ๋๋๊ณ ๋ฌ์ ๋์ ๋ด ์ํฉ
๊ทธ๋์ ํ๊ธฐ๋ฅผ ์ ์ด๋ณด์๋ค...๐
๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ด๊ฒ ์ ์๋๋๋์ง
๋๋ ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์ผ๋์ง
์ด๋ค ๊ธฐ๋ฅ๋ค์ด ์ ์ฉํ๋์ง ๋ค์ ๋์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ดค๋ค.
ํน์๋ ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ ๊น ๊ณ ๋ฏผ ์ค์ด์๋ผ๋ฉด
์ฃผ์ ์์ด ์ฐธ์ฌํด๋ณด๋ผ๊ณ ๊ถํ๊ณ ์ถ๋ค.
๋ฏธ๋ฃจ๊ณ ๋ฏธ๋ฃฌ ๋ฐ๋ค ๋ช ๋ฒ ์คํจ๋ ํด๋ดค๋ ๋๋ ์ฑ๊ณตํ๋ค.
์ง๊ธ ์ด ํ๊ธฐ๋ฅผ ์ฐพ์๋ณผ ์ ๋๋ก ๋ถ์ง๋ฐํ ๋น์ ์
์ฑ๊ณตํ๋ฅ ์ด 5000%์ด๋ค!
๋ง์ง๋ง์ผ๋ก ์ฑ๋ฆฐ์ง๋ฅผ ํตํด ๋ง๋ค์๋ ํฌ๋๋ฆฌ์คํธ ์ฌ์ดํธ์ ์ฝ๋๋ฅผ ๊ณต์ ํด๋ณธ๋ค.