Pug ๋ฐ๋ณตํ์ด์ง๋ณ๋ก pug๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด header๋ footer๊ฐ์ ๊ฒฝ์ฐ ๊ณ์ ๋ฐ๋ณตํด์ ์์ฑํด์ผํ๋ ๋ฒ๊ฑฐ๋ฌ์์ด ์๋ค.
HTML์ ๋ฌธ์์ด์จ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ(๊ธฐ๋ณธ)์ปจํธ๋กค๋ฌ์์ ์์ฑํ๊ธฐ์๋ ๋๋ฌด ๋ด์ฉ์ด ๋ง๋ค.Pug (ใฑใ ใ ๐)ํ ํ์ ์ด์ฉํด์ ๋ทฐ๋ฅผ ๋ง๋๋๊ฒ์ ๋์์ค์ค์นhttps://www.npmjs.com/package/pug gitHubhttps://github.com/p
:id๋ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ๋ถ๋ฅธ๋ค.:id์์ id๋ ๋ค๋ฅธ ์ด๋ฆ์ผ๋กํด๋ ๊ด์ฐฎ์(์: potato) ์ค์ํ ๊ฒ์ ์์ ':'๋ฅผ ๋ฃ๋๊ฒํ๋ผ๋ฏธํฐ๋ url์์ ๋ณ์๋ฅผ ํฌํจ์ํฌ ์ ์๊ฒ ํด์ค๋ค.๋ ธ๋ง๋์ฝ๋ ์์ url ํ์ธ ์https://nomadcoders.co/wetube
์ ์ ์ ์ฅ์ ์๊ฐํ์ฌ ํ๋์ง๊ธฐ(๊ธฐ๋ณธ)๋์ค์ ๋๊ธ๊ธฐ๋ฅ๊ณผ ์ข์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์์ ํ(/)์ ๊ฐ๋ค.๋ก๊ทธ์ธํ์ง ์์๋ค๋ฉด ๋ก๊ทธ์ธ(/login)2-1. ํ์๊ฐ์ ์ ์ํ๋ค๋ฉด ํ์๊ฐ์ (/join)2-2. ํ์๊ฐ์ ์ด ๋์ด์์ผ๋ฉด ๋ก๊ทธ์ธ(/login)ํ์ผ๋ก ๋์์์ ๋์์ ๊ฒ์(/sea
ํ์ง๋ง, ์ถํ ๋ผ์ฐํฐ ํจ์์ ๋ด์ฉ์ด ์ ์ ๋์ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํฐ์ ์ปจํธ๋กค๋ฌ๊ฐ ๊ฐ์ ๊ณณ์ ์๋ ๊ฒ์ ์ข์ง ์์ ๊ฒ์ด๋ค.ํ์ฌ, ์ปจํธ๋กค๋ฌ ํ์ผ์ ๋ฐ๋ก ๋ง๋ค์ด์ผ ํ๋ค.globalController๊ฐ ์๋ ์ด์ ๋?๊ธ๋ก๋ฒ ๋ผ์ฐํฐ๋ url์ ๊น๋ํ๊ฒ ํ๊ธฐ ์ํด ์ฐ๋๊ฒ์ผ ๋ฟ์์
์ปจํธ๋กค๋ฌ์ ๋ผ์ฐํฐ ๋๋๊ธฐ๋ชจ๋ ํ์ผ์ ๋ถ๋ฆฌ๋ ๋ชจ๋server.js์ ์๋ ์๋ ์์ค router jsํ์ผ์ ์๋ผ๋ด๊ธฐrouter js์์ import expressํ๊ธฐjs๋ ๊ฐ์ ์๊ธฐ์ธ๊ณ๋ฅผ ๊ฐ์ง.์ด๋ฏธ server.js์ express๋ฅผ importํ์ด๋ globalRout
http://expressjs.com/ko/api.htmlRouter๋ controller์ URL๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด์ค. ์ฝ๊ฒ ๋งํด ๋ฏธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ฒ ํด์ค์์ ์ค์ธ ์ฃผ์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก URL์ ๊ทธ๋ฃนํ ํด์ค๋ชจ๋ Express ์ ํ๋ฆฌ์ผ์ด์ ์๋ app router๊ฐ
https://www.npmjs.com/package/morganmiddleware๋ ์ง์ ์์ฑํ ์ ๋ ์๊ณ ์ค์นํ ์๋ ์๋๋ฐ morgan์ ์ค์นํ๋ ๊ฒ ์ค ํ๋.morgan์ node.js ์๋ฒ๋ก ๊ตฌ์ฑ๋ ์น ํ๊ฒฝ์์ HTTP request ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ
app.use() golobal middleware๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ค (์ด๋ URL์๋ ์๋ํ๋ middleware) app.use() ์ ๋ฌด์กฐ๊ฑด get์์ ์์ผํ๋ค. (get๋ณด๋ค ์๋ ์์ผ๋ฉด middleware์ด ์๋ํ์ง ์์) ๋ชจ๋ route์์ ์ด ํจ์๋ฅผ ์ฌ์ฉ
์ค๊ฐ์ ์๋ ์ํํธ์จ์ด1\. Middlewares๋ request์ response ์ฌ์ด์ ์๋ค๋ธ๋ผ์ฐ์ ๊ฐ requestํ ๋ค์, ์๋ฒ๊ฐ ์๋ตํ๊ธฐ ์ Middlewares๊ฐ ์๋ ๊ฒ2\. Middlewares๋ handler(controller)๊ณ , ๋ชจ๋ handler(
์๋ฒ๊ฐ request์ respondํ๋๋ก ํ๋ ๋ฒ์๋ฒ์๊ฒ get request์ ์ด๋ป๊ฒ ์๋ตํ๋ ์งhttp request๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง(์ธ์ ์์๋๊ณ ์ธ์ ์ข ๋ฃ๋๋ ์ง)์ฒซ๋ฒ์งธ ์ธ์๋ request object(req) ๋๋ฒ์งธ ์ธ์๋, response object
์๋ฒ๊ฐ request์ respondํ๋๋ก ํ๋ ๋ฒ์๋ฒ์๊ฒ get request์ ์ด๋ป๊ฒ ์๋ตํ๋ ์งhttp request๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง(์ธ์ ์์๋๊ณ ์ธ์ ์ข ๋ฃ๋๋ ์ง)express์ ์ฐ๊ด๋ ์ฝ๋๋ express application์ด ๋ง๋ค์ด์ง ๋ค์๋ถํฐ ์ฝ๋๋ฅผ
import express from "express"express function์ ์ฌ์ฉํ๋ฉด express application์ ์์ฑํด์ค๋ค.์ด์ app์ด express application์ด ๋ ๊ฒapp์ด listentํด์ผ ํ๋ค ํ์ ๋ ๋ฌด์์ listeningํด์ผ
babel์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ต์ JS๋ฅผ NodeJS๊ฐ ์ดํดํ ์ ์๋ JS๋ก ๋ฐ๊ฟ์ค๋ค.๋ฐ๋ฒจ ์ค์น ๋ฐ๋ก๊ฐ๊ธฐ(https://babeljs.io/setupNode๋ฅผ ํด๋ฆญ ํ ์ค์น ๋ฐฉ๋ฒ ํ์ธ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ ์ค์น๋ฅผ ํ๊ฒ๋๋ฉด package.json์ devDepe
git initgithub์ Repository ์์ฑ ๋ฐ URL ๋ณต์ฌ์๊ฒฉ์ ์ฅ์์ ์ถ๊ฐgit remote add origin https://github.com/jjinichoi/wetube-reloadednpm init์๋์ฒ๋ผ ๋ฌผ์ด๋ณด๋ ๊ฒ์ ๋ตํ๋ฉด package
npm ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ํจํค์ง ๊ด๋ฆฌ์์ด๋ค.์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ Node.js์ ๊ธฐ๋ณธ ํจํค์ง ๊ด๋ฆฌ์์ด๋ค.yarn์ด๋ ๊ฑฐ์ ๋๊ฐ์๊ฒ์(ํ๋ถ์ด ๋ง๋ ํจํค์ง ๋งค๋์ )https://www.npmjs.com/
NodeJS๋ฅผ ์ฝ๊ฒ ๋งํ๋ฉด ํฌ๋กฌ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด๋ค.๋ธ๋ผ์ฐ์ ๋ฐ์์ ๋์๊ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ90๋ ๋ JS๋ ์น์ฌ์ดํธ์ ์ํธ์์ฉ์ ํ ์ ์๋๋ก ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ์๋ค.Ryan Dahl์ NodeJS๋ฅผ ๋ง๋ค์ด์
์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด, ์ฌ์ํ ์๋ฌ๋ ํฐ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋ ๊ฒ์ด๋ค.์๋ฌ ๋ฐ์ ์ ์๋ ๋ด์ฉ๋๋ก ํด๊ฒฐํด๋ณด์.1\. ์๋ฌ ๋ฐ์ ์ ์ค์ค๋ก ๊ณ ์น๋ค.(๊ตฌ๊ธ๋ง ๋ฑ)2\. ์๋ฌ๋ฉ์ธ์ง๋ฅผ ๋ณด๊ณ ๊ณ ์ณ๋ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์์๋ ์๋ฌ์ ๋ํ ์ง๋ฌธ์ ์ 3์์๊ฒ ํ๊ฒ๋ ๊ฒ์ธ๋ฐ, "์๋ผ์, ์ด๋ก
1๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก A๋ผ๋ ์ฌ๋๊ณผ B๋ผ๋ ์ฌ๋์ด ๋์์ ๋ฒ์ 2๋ฅผ ๋์์ ์์ ํ๊ณ ์ปค๋ฐ์ ์์ผ๋ฉด ์ถฉ๋์ด ๋ฐ์ ํ ์ ์๋ค. ์ด๋ด ๊ฒฝ์ฐ ํ์ค์ด ์๋ ์ฌ๋ฌ ์ค๋ก ์๋๋ค.n์ค๋ก ์๊ณ ๋์ค์ ํฉ์น ์ ์๋์ง โ ใ ใ ๊ทธ๋ผ ์ถฉ๋์ด ๋๋๋ผ๋ ํฉ์น๋ ์์ ์ ๋ช ์์ ์ผ๋ก ์ถฉ๋์ ํด๊ฒฐํ ์