[week_08] React ๊ธฐ์ด โ (2) JSX์ ์ปดํฌ๋ํธ
1. JSX ํจ์ ํธ์ถ๊ณผ ๊ฐ์ฒด ์์ฑ์ ์ํ ๋ฌธ๋ฒ์ ํธ์๋ฅผ ์ ๊ณตํ๋ JavaScript์ ํ์ฅ HTML๊ณผ ๋น์ทํ๊ฒ ์๊ฒผ์ผ๋ JavaScript์ด๊ณ , HTML๊ณผ ๋ค๋ฅธ ๋ถ๋ถ์ด ์๋ค. JSX๋ Babel์ ์ํด์ Transcompile ๋๋ค. 1-1. JSX์ ์ฅ์ 1) ๊ฐ๋ฐ์ ํธ์์ฑ ํฅ์ 2) ํ์ ์ ์ฉ์ด / ์์ฐ์ฑ ํฅ์ 3) ๋ฌธ๋ฒ ์ค๋ฅ์ ์ฝ๋๋ ๊ฐ์ 1-2. JSX์ ํน์ง (HTML๊ณผ ์ฐจ์ด์ ) 1) HTML ํ๊ทธ ๋ด์ JavaScript ์ฐ์ฐ const App = () => { const a = 3; const b = 6; return {a} + {b} = {a+b} } 2) class โก className ( {name}๋ ์๋ ํ์ธ์. ) 3) ์คํ์ผ์ object๋ก ์์ฑ ( {name}๋ ์๋ ํ์ธ์. )..
[week_08] React ๊ธฐ์ด โ (1) OT
1. SPA (Single Page Application) ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ต์ด ์ ์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์๋ฒ๋ก๋ถํฐ HTML์ ์ ๋ฌ ๋ฐ๋๋ค. ๊ทธ ํ ํ์ด์ง์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์ JSON์ผ๋ก ์ ๋ฌ ๋ฐ๋๋ค. ์ด ๋, ํ์ด์ง์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๊ณ์ฐํ์ฌ ๋ค์ ๊ทธ๋ฆฌ๊ฒ ๋๋ค. (์ ํต์ ์ธ ํ์ด์ง์ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ์ด ์์ ๋๋ง๋ค HTML์ ์๋ก ๋ฐ์์ ํ์ด์ง๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๊ทธ๋ฆผ) ๐ React๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฌํ ํ์๋ฅผ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋ค! 2. React ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ Component : React์ ๋ ๋ฆฝ์ ์ธ ๋จ์ Virtual DOM : ๊ฐ์์ ์ธ ํํ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ReactDOM๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ค์ DOM๊ณผ ๋๊ธฐํํ๋ ํ๋ก..
[week_07] 3๊ณ์ธต ์ค๊ณ (3-Layer architecture)
1. 3๊ณ์ธต ๊ตฌ์กฐ๋ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ 3๊ฐ ๊ตฌ์กฐ๋ก ๋๋์ด ๊ตฌํํ๋ ๊ฒ 1-1. Controler layer (์ปจํธ๋กค๋ฌ) ์ฌ์ฉ์์ ์์ฒญ(request)์ ๋ถ์ํ ํ, ์๋ง์ ์๋น์ค๋ก ํด๋น ์์ฒญ์ ์ ๋ฌํด ์ค ๋ค์, ์๋น์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์๋ต (response)ํ๋ ์ธต ๋ผ์ฐํ (Routing)์ด ์ด๋ฃจ์ด์ง๋ ์ธต express์ ๊ฒฝ์ฐ, req.params(), req.body(), res.status(), res.send() ์ ๊ฐ์ ์ฝ๋ ์์ฑ 1-2. Service layer (์๋น์ค) ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ์ ๋ฌ๋ ์์ฒญ์ ๋ก์ง์ ์ ์ฉํ๋ ์ธต ์) ๋ก๊ทธ์ธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ํด๋น ID์ ์ฌ์ฉ์๊ฐ DB์ ์กด์ฌํ๋์ง์ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ณ , ๊ทธ ํ ๋น๋ฐ๋ฒํธ์ ์ผ์น์ฌ๋ถ๋ฅผ ํ๋จํด์ ๋ก๊ทธ์ธ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฑ์ ๋ก์ง ..
[week_07] Express.js์ MongoDB๋ก ์น์๋น์ค ๋ง๋ค๊ธฐ (3) | JWT, OAuth, Nginx
1. JWT JSON Web Token ์ธ์ฆ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ ์๋ช ์ ์ด์ฉํด์ ํ์ธํ๋ ๋ฐฉ๋ฒ Web Token โก ๋ฐ์ดํฐ๋ฅผ ์น์์ ์ฌ์ฉํ๊ธฐ ์ํ ์คํ โก base64 ์ธ์ฝ๋ฉ ์ฌ์ฉ 1. header - ํ ํฐ์ ํ์ (jwt), ๋ฐ์ดํฐ ์๋ช ๋ฐฉ์ 2. payload - ์ ๋ฌ๋๋ ๋ฐ์ดํฐ 3. signature - ํค๋์ ํ์ด๋ก๋์ ์ ์์๋ช payload๋ decode ์ ์ ๋ณด๊ฐ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์, ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ธํ๊ณ ํ ํฐ์ ์์ฑํด์ผ ํ๋ค. ์๋ฒ๊ฐ JWT๋ฅผ ์์ฑํ ๋, ๋น๊ณต๊ฐํค๋ฅผ ์ด์ฉํด์ ์๋ช โก payload ์กฐ์ํ๋ฉด ์๋ช ์ด ๋ถ์ผ์น โก ์ธ์ฆ ์คํจ โจ JWT ์๋ ๋ฐฉ์ 1. ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ 2. ์๋ฒ๊ฐ ๋ก๊ทธ์ธ๋ ์ ์ ์ ๋ณด๋ฅผ JWT๋ก ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ 3. ํด๋ผ์ด์ธํธ๋ ์ ๋ฌ๋ฐ์ JWT๋ฅผ ์ด์ฉํ์ฌ ์ธ์ฆ์ด..
[week_07] Express.js์ MongoDB๋ก ์น์๋น์ค ๋ง๋ค๊ธฐ (2) | Hash, Session, ๋ก๊ทธ์ธ/ํ์๊ฐ์
1. Hash ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ ๋ฌธ์์ด์ ๋๋๋ฆด ์ ์๋ ๋ฐฉ์์ผ๋ก ์ํธํํ๋ ๋ฐฉ๋ฒ hash ์ถ๋ ฅ๊ฐ์ ์ด์ฉํด์ ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋ผ ์ ์๋ค. ๋น๋ฐ๋ฒํธ์ Hash ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ , ๋ก๊ทธ์ธ ์ ์ ๋ฌ๋ ๋น๋ฐ๋ฒํธ๋ฅผ Hashํ์ฌ ์ ์ฅ๋ ๊ฐ๊ณผ ๋น๊ตํด์ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ 1-1. Node.js์์์ Hash ์ฌ์ฉ๋ฒ crypto ๋ชจ๋์ ์ฌ์ฉํด์ hash ๊ฐ์ ์ป์ ์ ์๋ค. const hash = crypto.createHash('sha1'); // ํน์ ํด์ฌ ์๊ณ ๋ฆฌ์ฆ ์ค์ hash.update(password); // ์ ๋ ฅ๋ฐ์ ํ๋ฌธ put hash.digest('hex'); // 16์ง์ ๋ฌธ์์ด๋ก ์ถ๋ ฅ ๊ฐ๋จํ๊ฒ sha1 ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ฑฐ๋, ๋ณด๋ค ๊ฐ๋ ฅํ sha224, sha256 ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ..
[BE] REST API
1. REST (Representational State Transfer) ์ด๋ค ์์์ CRUD ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด URI๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ๊ฐ๋ฅ 1-1. ๊ตฌ์ฑ์์ 1) ์์(Resource) : HTTP URI 2) ์์์ ๋ํ ํ์(Verb) : HTTP Method (GET, POST, PUT(PATCH), DELETE) 3) ์์์ ๋ํ ํ์์ ๋ด์ฉ(Representations) : HTTP Message Payload (JSON, XML, RSS ๋ฑ) 1-2. REST๊ฐ ์ ํ์ํ๊ฐ? ๊ฐ ์..
[week_06] asyncHandler, Pagination, PM2 Process Manager
1. asyncHandler request handler๋ฅผ async function์ผ๋ก ์์ฑํ๋ฉด์ try ~ catch, next๋ฅผ ์๋์ผ๋ก ํ ์ ์๋๋ก ๊ตฌ์ฑํ ์์ด๋์ด requestHandler๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ํจ์ํ ๋ฏธ๋ค์จ์ด ์ ๋ฌ๋ requestHandler๋ try ~ catch๋ก ๊ฐ์ธ์ ธ asyncHandler ๋ด์์ ์คํ throw๋๋ ์๋ฌ๋ ์๋์ผ๋ก ์ค๋ฅ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๋ก ์ ๋ฌ๋๋๋ก ๊ตฌ์ฑ๋จ const asyncHandler = (requestHandler) => { return async(req, res, next) => { try { await requestHandler(req, res); } catch(err) { next(err); } } } // ----------------------..
[week_06] Template Engine
1. ํ ํ๋ฆฟ ์์ง ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ผ HTML์ ํํ๋ฅผ ๋ฏธ๋ฆฌ ํ ํ๋ฆฟ์ผ๋ก ์ ์ฅ ๋์ ์์ ๋ฏธ๋ฆฌ ์์ฑ๋ ํ ํ๋ฆฟ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ ์์ฑ๋ HTML ์์ฑ ํ ํ๋ฆฟ ์์ฑ ๋ฌธ๋ฒ๊ณผ ์์ฑ๋ ํ ํ๋ฆฟ์ HTML๋ก ๋ณํํ๋ ๊ธฐ๋ฅ ์ ๊ณต 1-1. Express.js์ ํ ํ๋ฆฟ ์์ง EJS: html๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ ํ ํ๋ฆฟ ์์ง Mustache: ๊ฐ๋จํ ๋ฐ์ดํฐ ์นํ ์ ๋๋ง ์ ๊ณตํ๋ ๊ฒฝ๋ํ๋ ํ ํ๋ฆฟ ์์ง Pug: ๋ค์ฌ์ฐ๊ธฐ ํํ์์ ์ด์ฉํ ๊ฐ๋ตํ ํ๊ธฐ์ ๋ ์ด์์ ๋ฑ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ ๊ณต 2. Pug ๋ค์ฌ์ฐ๊ธฐ ํํ์์ ์ด์ฉํด ๊ฐ๋ ์ฑ์ด ์ข๊ณ ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋์, HTML์ ์ ๋ชจ๋ฅด๋๋ผ๋ ๋ฌธ๋ฒ์ ์ค์๋ฅผ ์ค์ผ ์ ์์ layout, include, mixin ๋ฑ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ ๊ณต html head title= title body h1#gr..