๐ท 18์ผ์ฐจ (2023/10/11 ~ 2023/10/30)๐ท
โ
package.json
โ
express ์๋ฒ ์ฌ์ฉํด๋ณด๊ธฐ
โ
express๋ก html ์๋นํ๊ธฐ
โ
๋ฏธ๋ค์จ์ด ์ฌ์ฉํ๊ธฐ
โ
๋ฏธ๋ค์จ์ด ํน์ฑ ์ดํดํ๊ธฐ
โ
next ํ์ฉ๋ฒ
โ
morgan, bodyParser, cookieParser
โ
MYSQL ์ค์นํ๊ธฐ
๐package.json
โจ npm ์ด๋
- ๋
ธ๋์ ํจํค์ง ๋งค๋์
- ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ง๋ ์์ค ์ฝ๋๋ค์ ๋ชจ์๋ ์ ์ฅ์
- ๋จ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ
- ์ด๋ฏธ ์๋ ๊ธฐ๋ฅ์ ๋ค์ ๊ตฌํํ ํ์๊ฐ ์์ด ํจ์จ์
- ์คํ ์์ค ์ํ๊ณ๋ฅผ ๊ตฌ์ฑ์ค
- ํจํค์ง : npm์ ์
๋ก๋๋ ๋
ธ๋ ๋ชจ๋
- ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๋ฏ ํจํค์ง๋ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์
- ์์กด ๊ด๊ณ๋ผ๊ณ ๋ถ๋ฆ
โจ package.json
- ํ์ฌ ํ๋ก์ ํธ์ ๋ํ ์ ๋ณด์ ์ฌ์ฉ ์ค์ธ ํจํค์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ํ์ผ
- ๊ฐ์ ํจํค์ง๋ผ๋ ๋ฒ์ ๋ณ๋ก ๊ธฐ๋ฅ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ๋ฒ์ ์ ๊ธฐ๋กํด๋์ด์ผ ํจ
- ๋์ผํ ๋ฒ์ ์ ์ค์นํ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
- ๋
ธ๋ ํ๋ก์ ํธ ์์ ์ package.json ๋ถํฐ ๋ง๋ค๊ณ ์์ํจ (npm init)
โจ package.json ์์ฑ๋ค
- package name : ํจํค์ง์ ์ด๋ฆ
- version : ํจํค์ง์ ๋ฒ์ / npm์ ๋ฒ์ ์ ๋ค์ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌ๋จ
- entry point : ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ์ผ ์ง์
์ / ๋ณดํต ๋ง์ง๋ง์ผ๋ก module.exports๋ฅผ ํ๋ ํ์ผ ์ง์ ํจ
- test command : ์ฝ๋๋ฅผ ํ
์คํธํ ๋ ์
๋ ฅํ ๋ช
๋ น์ด
- git repository : ์ฝ๋๋ฅผ ์ ์ฅํด๋ Git ์ ์ฅ์ ์ฃผ์ / ๋์ค์ ์์ค์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ฌ์ฉ์๋ค์ด ์ด ์ ์ฅ์์ ๋ฐฉ๋ฌธํด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ์ ์๊ณ , ์ฝ๋ ์์ ๋ณธ์ ์ฌ๋ฆด ์๋ ์์
- keywords : ํค์๋๋ npm ๊ณต์ ํํ์ด์ง์์ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๊ฒ ํด์ค
- license : ํด๋น ํจํค์ง์ ๋ผ์ด์ ์ค ๋ฃ๊ธฐ
โจ npm ์คํฌ๋ฆฝํธ

๐express ์๋ฒ ์ฌ์ฉํด๋ณด๊ธฐ
โจ express ์๊ฐ
- http ๋ชจ๋๋ก ์น ์๋ฒ๋ฅผ ๋ง๋ค ๋ ์ฝ๋๊ฐ ๋ณด๊ธฐ ์ข์ง ์๊ณ , ํ์ฅ์ฑ๋ ๋จ์ด์ง


๐๋ฏธ๋ค์จ์ด ์ฌ์ฉํ๊ธฐ
โจ ์์ผ๋์นด๋
app.get('/category/:name', (req, res)=> {
res.send(`hello ${req.params.name}`)
}))
app.get('/category/:name', (req, res)=>{
res.send('hello wildcard')
})
app.get('/category/Javascript', (req, res) => {
res.send('hello Javascript')
})
- ๋ฐ๋ผ์ ์์ผ๋ ์นด๋์ ๋ฒ์๊ฐ ๋์ ๋ผ์ฐํฐ๋ค์ ๋ณดํต ์๋์ ์จ์ค
๐๋ฏธ๋ค์จ์ด ํน์ฑ ์ดํดํ๊ธฐ
โจ ๋ฏธ๋ค์จ์ด๋
app.use((req, res, next)=>{
console.log('๋ชจ๋ ์์ฒญ์ ์คํํ๊ณ ์ถ์ด์')
next()
})
์ด ๋ถ๋ถ์์
(req, res, next)=>{
console.log('๋ชจ๋ ์์ฒญ์ ์คํํ๊ณ ์ถ์ด์')
next()
}
์ด ๋ถ๋ถ์ use ์ ์ฅ์ฐฉ ์ํจ๊ฒ์.
- ๋ฏธ๋ค์จ์ด ์ฌ๋ฌ๊ฐ ์ธ ์ ์์
- ํ๋์ ๋ฏธ๋ค์จ์ด์์ send๋ ํ๋ฒ๋ง ํ์ฉ๋จ
ex) res.sendFile / res.send / res.json
๐next ํ์ฉ๋ฒ
โจnext
- next ๋ฅผ ํธ์ถํด์ผ ๋ค์ ์ฝ๋๋ก ๋์ด๊ฐ
- next๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๋ฉด ์๋ต์ด ์ ์ก๋์ง ์์
- ๋ค์ ๋ฏธ๋ค์จ์ด(๋ผ์ฐํฐ ๋ฏธ๋ค์จ์ด)๋ก ๋์ด๊ฐ์ง ์๊ธฐ ๋๋ฌธ
- next์ ์ธ์๋ก ๊ฐ์ ๋ฃ์ผ๋ฉด ์๋ฌ ํธ๋ค๋ฌ๋ก ๋์ด๊ฐ
โจ์๋ฌ ์ฒ๋ฆฌ
- ์๋ฌ ๋ฏธ๋ค์จ์ด๋ก ๋์ด๊ฐ
- next()์ ์ธ์๊ฐ ๋ด๊ธฐ๋ฉด ์๋ฌ ๋ฏธ๋ค์จ์ด๋ก ๋์ด๊ฐ


- '์คํ๋๋์?'๊ฐ ์ถ๋ ฅ๋์ง ์๊ณ ๋ค์ ๋ฏธ๋ค์จ์ด๋ก ๋์ด๊ฐ '์คํ๋์ง๋กฑ'์ด ์ถ๋ ฅ๋จ

๐MYSQL ์ค์นํ๊ธฐ
โจ๋ฐ์ดํฐ๋ฒ ์ด์ค๋
- ์ง๊ธ๊น์ง๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์
-> ์๋ฒ๋ฅผ ์ฌ์์ํ๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ ธ๋ฒ๋ฆผ => ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ๊ณต๊ฐ ํ์
- MySQL ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
-> ๋ฐ์ดํฐ๋ฒ ์ด์ค : ๊ด๋ จ์ฑ์ ๊ฐ์ง๋ฉฐ ์ค๋ณต์ด ์๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ
-> DBMS : ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ
-> ์๋ฒ์ ํ๋ ๋์คํฌ๋ SSD ๋ฑ์. ์ ์ฅ ๋งค์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
-> ์๋ฒ ์ข
๋ฃ ์ฌ๋ถ์ ์๊ด ์์ด ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์
-> ์ฌ๋ฌ ์ฌ๋์ด ๋์์ ์ ๊ทผํ ์ ์๊ณ , ๊ถํ์ ๋ฐ๋ก ์ค ์ ์์
