Blog
About Me
citeFredโs Blog
/
Tags
/
Node.js
Blog
About Me
citeFredโs Blog
/
Tags
/
Node.js
Share
Blog
About Me
๐ท๏ธ
Node.js
# of Posts
13
1 more property
Gallery
Search
https://folk.universitetetioslo.no/trygver/themes/mvc/mvc-index.html
1. MVC ๋์์ธ ํจํด
2. MVC์ ์์
[Node.js] 13. MVC ๋์์ธ ํจํด๊ณผ ๋ฆฌํฉํ ๋ง
1. ํ๋ฌ๊ทธ์ธ ์ค์น
Marketplace์์ ์๋ ํค์๋๋ก ๊ฒ์ํ์ฌ ๊ฐ๊ฐ ์ค์นํ๋ค.
โข
SQLTools
โข
@tag:sqltools-driver
2. ์ค์น ํ ์ปค๋ฅ์ ์ถ๊ฐ
โข
์ข์ธก ํ๋จ ์ํตํ DB ์์ด์ฝ์ด ์์ฑ๋๊ณ Add New Connection์ผ๋ก DB์ ์ฐ๊ฒฐํด์ผ ํ๋ค.
โข
๋๋ผ์ด๋ฒ ํ๋ฌ๊ทธ์ธ๋ ์ค์น๊ฐ ์ ์์ ์ผ๋ก ๋์๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ด์ฝ์ด ๋ํ๋๋ค. MySQL ์ ํ
[Node.js] 12. ๋ฐ์ดํฐ๋ฒ ์ด์ค GUI VSCode ํ๋ฌ๊ทธ์ธ
Visual Studio Code์์ EJS ๋ฌธ๋ฒ ์ธ์ ๋ถ๊ฐ
๋ฌธ๋ฒ์ ๊ธฐ๋ฅ์ ์ ์ ์๋๋๋๋ฐ ์๋์ฒ๋ผ IDE๊ฐ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
๋ง์ผํ๋ ์ด์ค์์ ๊ด๋ จ ํ๋ฌ๊ทธ์ธ์ ์ค์นํด๋ ํด๋น ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์๋๋ค.
HTML ์ค์ ๋ณ๊ฒฝ์ผ๋ก ํด๊ฒฐ
์๋ํฐ ์ฐ์ธก ํ๋จ์ HTML๋ถ๋ถ์ ๋๋ฅด๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ก HTML ์ธ์ด ์ค์ ์ ๋ํ ๋ถ๋ถ์ด ๋ํ๋๋ค.
ํด๋น ๋ถ๋ถ์ ์ ํํ๋ฉด
settings.json
ํ์ผ์ด ์ด๋ฆฌ๋ฉฐ ์ค์ ๊ฐ์ด ์๋ ์๋จ ์ค๊ดํธ์
,
๋ฅผ ์ถ๊ฐํ์ฌ ๊ตฌ๋ถํด์ฃผ๊ณ ์๋ ์ฒ๋ผ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋น ์ค๋ฅ๋ฅผ ์ ๊ฑฐ ํ ์ ์๋ค.
[Node.js] 11. Visual Studio Code์์ EJS ๋ฌธ๋ฒ <% โฆ %> ๋นจ๊ฐ์ค ์ธ์๋ถ๊ฐ ํด๊ฒฐ
Ajax โ Fetch API
์ด์ Ajax๋ฅผ ํตํด์ REST ์ํคํ ์ฒ๋ฅผ ๊ฐ์ถ์์ง๋ง jQuery AJAX๋ ์์ฒญ์ ๋ณด๋ด๊ณ , ์ฑ๊ณต ๋ฐ ์ค๋ฅ์ ๋ํ ๊ฐ๊ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ง์ ๊ตฌํํ๊ณ ์์๋ค. success ๋ถ๋ถ์
function
, error ๋ถ๋ถ์
function
์ด๋ฅผ ํตํด ๋น๋๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํ๋๊ณ ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ฌ๋ฌ ์ฝ๋ฐฑํจ์๋ฅผ ์ง์ ์์ฑ, ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ์ฝ๋๊ฐ ๋ค์ ๋ณต์กํด์ง ์ ์๋ ๋ฌธ์ ์ ์ด ์์๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ๊ฐ์ ํ ์ ์์๋๊ฑด Promise๊ฐ์ฒด๋ก ์คํจ, ์ฑ๊ณต ์ํ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก์จ Fetch API ํจ์๋ ํญ์ ์ด ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๊ฒ์ผ๋ก ์ค๊ณ๋์๋ค.
๋ฐ๋ผ์, fetch() ๋ฉ์๋๋ฅผ ํตํด์ ๋ฉ์๋ ์ฒด์ด๋(. ์ฐ๊ฒฐ)์ ํตํด .then()๊ณผ .catch() ๋ฉ์๋๋ฅผ ์ฌ์ฉ ํ ์ ์์ด ๊ตฌ์กฐ์ ์ผ๋ก ๊ฐ๋ ์ฑ์ ๋์ด๋ ์ญํ ์ ํ๊ฒ ๋์๋ค.
โข
Ajax ์์ฒญ์ ์ผ๋ฐ์ ์ธ ํํ
โข
Fetch API ์์ฒญ์ ์ผ๋ฐ์ ์ธ ํํ
[Node.js] 10. ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ผFetch API ์์ฒญ ๋ฆฌํฉํ ๋ง
REST API
HTML ํผ(form) ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก
GET
๊ณผ
POST
๋ฉ์๋๋ง ์ง์ํ๊ณ ์๋ค. ํ๋ก ํธ์ form action์ method ์์ฑ์ put์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ฐฑ์๋ ๋ผ์ฐํฐ ๋ํ app.put()์ผ๋ก ๋ณ๊ฒฝํด๋ ์๋ํ์ง ์๋๋ค.
ํ์ฌ CRUD ๊ธฐ๋ฅ์์ Create(POST), Read(GET), Update(POST), Delete(POST)์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
ํ์ง๋ง ํ์ง๋ง ์ฐ๋ฆฌ๋ RESTful API์์ ๊ฐ ๊ธฐ๋ฅ๋ณ ์ ์ ํ HTTP Method๋ฅผ ์ ํํด์ผํ๊ธฐ ๋๋ฌธ์ REST API๋ฅผ ์งํฅํ๊ธฐ ์ํด์๋ ์์ฒญ ๋ฉ์๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก RESTful API ๋์์ธ์์๋ ์ ๋ฐ์ดํธ๋
PUT
๋ฉ์๋, ์ญ์ ๋
DELETE
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ด๋ก์ ์ด๋ค.
Ajax์์ฒญ์ ์ํ jQuery ์ฐธ์กฐ
HTML ํผ์์๋ PUT๊ณผ DELETE ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์ฐ์ ํ์ฌ๊น์ง๋ ํ์ฉ ๋๋ ๋ ๊ฑฐ์ ํ๋ก์ ํธ ์ค์ AJAX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. AJAX๋ ์ ํต์ ์ธ HTML <form>์์ RESTful ์ํคํ ์ฒ๋ก ๋ฐ์ ํ๋ ๋ฐ ์ค์ํ ์ ํ์ ์ด ๋ ๋ชจ๋ ์ค ํ๋๋ค.
โข
ํ์ง๋ง ์๋์ ๊ฐ์ ์ฝ๋ ์ฒ๋ผ ์์ง๊น์ง ๋ณต์กํด๋ณด์ด๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์๋ค. ์ฒซ์ค์์์ฒ๋ผ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ํตํด ์ฒ๋ฆฌํ์
โข
ํ์ง๋ง jQuery๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด์ ์ Ajax ์์ฒญ์ ๋์ฑ ์ฝ๊ณ ๊ฐ๋ ์ฑ ๋๊ฒ ์๋ ์ฒ๋ผ ๋ณ๊ฒฝ๋์๋ค. ๋ณด๋ค ๊ฐ๋ฐ์ ์นํ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ์ฌ ํ์ฌ๊น์ง๋ ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
[Node.js] 9. REST API๋ฅผ ์ํ ๋ฆฌํฉํ ๋ง jQuery+Ajax
ํ ์ด๋ธ ์์
์ฐ์ ํ์ฌ ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฌ๊ธฐ์ status๋ผ๋ ๊ธ์ ์ํ๋ฅผ ์ถ๊ฐํ์ฌ ongoing(์งํ์ค), done(์๋ฃ) ๋ก ๋ฌธ์์ ๋ํ ๋ต๋ณ ์ํ๋ฅผ ์ถ๊ฐํ๊ณ ์ ํ๋ค. ๋ฐ๋ผ์ ๋ฌธ์๊ฐ ์์ฑ๋๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ongoing์ํ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฉฐ ๊ด๋ฆฌ์๊ฐ ๊ธ์ ์ํ๋ฅผ ๋ณ๊ฒฝ(์ ๋ฐ์ดํธ) ํ ์ ์๋๋ก ํ๋ค.
ํ ์ด๋ธ์ status๋ผ๋ ์ปฌ๋ผ์ ์ถ๊ฐํด์ผ ํ๋ค. ํ ์ด๋ธ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ alter table๋ก ์์๋๋ฉฐ status ์ปฌ๋ผ์ ์ถ๊ฐ(add)ํ๊ฒ ๋๋ค. default๋ก ongoing ๊ฐ์ ๊ฐ์ง๋๋ก ์ค์ ํ๋ค.
๊ธฐ๋ณธ๊ฐ ์ค์ ์ ๋ฐ๋ผ ๊ธฐ์กด ๋ชจ๋ ๋ฐ์ดํฐ๋ค๋ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ฉ๋์ด ongoing ์ํ๋ก ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Update API ์์ฑ
app.js Update API ์์ฑ
post์์ฒญ์ ํตํด id๋ฅผ PathVariable๋ก ๋ฐ์์จ๋ค. update ์ฟผ๋ฆฌ๋ฅผ ํตํด์ ํด๋น id์ row์ค status ์ปฌ๋ผ๊ฐ์ done์ผ๋ก ์์ ํ๋ค.
[Node.js] 8. CRUD-Update ๊ธฐ๋ฅ ์ถ๊ฐ
์กฐํ READ(select๋ฌธ) ๊ธฐ๋ฅ
app.js์ ์กฐํ API ์์ฑ
์ฐ์ READ๊ธฐ๋ฅ์ธ select ์ฟผ๋ฆฌ๋ฌธ์ ์คํํ ์ ์๋ ๋ก์ง์ด ๋ด๊ธด โ/contactListโ ์๋ํฌ์ธํธ์ GET์์ฒญ API๋ฅผ ์์ฑํ๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ก result๋ฅผ ๋ฐํํ๋ฉฐ lists๋ผ๋ ๋ณ์์ ๋ด์์ contactList.ejs๋ก render๋๋๋ก ์์ฑํ๋ค. ์๋๋ ์กฐํ ๊ฒฐ๊ณผ์ธ result์ ๋ด๊ธด ๋ฐ์ดํฐ์ด๋ค.
๋ชฉ๋ก ๋ทฐ ํ์ด์ง contactList.ejs
๋ฑ๋ก๋ ๋ฌธ์์ฌํญ์ ๋ณผ ์ ์๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด์.
API์์ lists์๋ด๊ธด ๋ฐ์ดํฐ๋ค์ forEach๋ฅผ ํตํด ํ ์ด๋ธ์ ํตํด์ ๋ฐ์ดํฐ๋ค์ ์ํํ๋ฉด์ 1๊ฐ์ ๋ฐ์ดํฐ(row)๋ง๋ค trํ๊ทธ๋ฅผ ์์ฑํ๋๋ก ์ค์ ํ๋ค. ejs ํ ํ๋ฆฟ์ ๋ฐ๋ณต๋ฌธ ๋ฐ ๋์ ๋ฌธ๋ฒ์ธ <% โฆ %>์์ forEach์ =๋์ ์ฐ์ฐ์๋ฅผ ํ์ฉํด์ผ ํ๋ค.
์๋ฒ๋ฅผ ์คํํ์ฌ contactList ์๋ํฌ์ธํธ์ API๋ก ์์ฒญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฃ๋ฅผ ์กฐํํ ๋ฐ์ดํฐ๋ฅผ ๋ชฉ๋ก์ผ๋ก ๋ณผ ์ ์๋ค.
[Node.js] 7. CRUD-Read, Delete ๊ธฐ๋ฅ ์ถ๊ฐ
๋ฐ์ดํฐ ์์ฒญ์ body-parser ํ์
์ฐ์ ํ๋ก ํธ์๋์์ ๋ฌธ์ํ๊ธฐ ๋ถ๋ถ์ ๋ค์ ์ฝ๋๋ก ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์์ฒญ์ ํ ์คํธํ๊ณ ์ ํ๋ค.
contact.ejs
Frontend ์ปค๋ฐ ์ดํ โ master ์ฒดํฌ์์ โ ํ์ฌ๊น์ง ๋ณ๋์ฌํญ master๋ก ๋ณํฉ (
git merge Frontend
)
๋๋ GUI๋ก Merge
์ดํ Backend๋ ์ปค๋ฐ์ด ๋ค์ฒ์ ธ์์ผ๋ฏ๋ก Backend ์ฒดํฌ์์ โ ๋ณ๋์ฌํญ ์ ์ฉ (
git rebase master
)
app.js
์์ ์ form์ ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ๋ณด๋ผ ๋ผ์ฐํฐ๋ฅผ ์๋์ ๊ฐ์ด ์์ฑํ๊ณ ์๋ฒ๋ฅผ ์คํํด๋๋ค.
์ ์์ฑ๋ ๋ฌธ์ํ๊ธฐ ํผ์ ํตํด์ ๊ฐ ํ๋๊ฐ๋ค form์ ํตํด post ์์ฒญํ ์ ์๋ค.
[Node.js] 6. Bodyparser์ฌ์ฉ ๋ฐ MySQL2, dotenv ๋ฏธ๋ค์จ์ด๋ก DB์ฐ๊ฒฐํ๊ธฐ(CRUD-Create ๊ธฐ๋ฅ)
express์์ ์ ์ ํ์ผ ๊ฒฝ๋ก ์ง์
์น ํ์ด์ง์์ ์ ์ ํ์ผ๋ค์ ๋ถ๋ฌ์์ ๋ํ๋ด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์๋์ฒ๋ผ index.ejs์์
img src
ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋๋ฐ express์์๋ ๋จ์ํ ๋ถ๋ฌ์์ง์ง ์๋๋ค.
Express์์๋ ์ ์ ํ์ผ์ ์ ๊ณตํ๊ธฐ ์ํด
express.static
๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
express.static ์ฌ์ฉํ๊ธฐ
express์ ๋ด์ฅ๋ static์ด๋ผ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด์ ์ ์ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก
public
์ด๋ ๋ช ์นญ์ ํด๋๋ฅผ ์ฌ์ฉํ๋ค. ์ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ ์ ํ์ผ์ ์ฌ์ฉ ํ ์ ์๋๋ก ์ค์ ํ๋ค.
์ํ ์ด๋ฏธ์ง ํ์ผ์ root/public/ ํด๋๋ก ์ด๋์ํค๊ณ ๋ก๋ํด๋ณธ๋ค.
index.ejs
์ ์์ฑํ ํ๊ทธ๋ฅผ ํตํด ์ ์์ ์ผ๋ก ์ ์ ์ด๋ฏธ์ง๊ฐ ๋ํ๋๋๊ฒ์ ํ์ธ ํ ์ ์๋ค.
[Node.js] 5. express์์ ์ ์ (static) ํ์ผ ๊ฒฝ๋ก ์ง์
HTML ํ์ค ๋ ์ด์์
์ฌ๋ฌ ํํ์ด์ง๋ค์ ์ธ๊ด์ ์ดํด๋ณด๋ฉด ๋น์ทํ ๋ ์ด์์์ ๋ณด์ฌ์ค๋ค. ์ด๋ฐ ๋ชจ์ต๋ค์ด ์น ํ์ค์ ๋ฐ๋ฅด๊ธฐ ์ํจ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ค์๊ฒ ์ต์ํ ๊ฒฝํ์ ์ ๊ณตํ๋ฉด์ ์ ๊ทผ์ฑ์ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ๋ก ์์ ์์ํ๊ธฐ๋ ํ๋ค. ๊ฐ๋ฐ์๊ฐ UX/UI ๊ด์ ์ ๊ฐ๋ฐ์ ๊ณ ๋ คํด์ผ ํ๋ ์ด์ ์ด๋ค. ๋ํ ์ฌํ์ฉ์ฑ, ์ ์ง๋ณด์์ฑ์ ํ์คํ, ๊ท์น ๋ค์์ ๊ด๋ฆฌ๋๊ธฐ ์ฝ๋ค.
์น ํ์ค
๋ธ๋ผ์ฐ์ ์ข ๋ฅ ๋ฐ ๋ฒ์ ์ ๋ฐ๋ฅธ ๊ธฐ๋ฅ ์ฐจ์ด์ ๋ํ์ฌ ํธํ์ด ๊ฐ๋ฅํ๋๋ก ์ ์๋ ํ์ค์ผ๋ก, ๋ค๋ฅธ ๊ธฐ์ข ํน์ ํ๋ซํผ์ ๋ฐ๋ผ ๋ฌ๋ฆฌ ๊ตฌํ๋๋ ๊ธฐ์ ์ ๋์ผํ๊ฒ ๊ตฌํํจ๊ณผ ๋์์ ์ด๋ ํ์ชฝ์ ์ต์ ํ๋์ด ์น์ฐ์น์ง ์๋๋ก ๊ณตํต์์๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ์ ์ํ๋ ๊ธฐ๋ฒ์ ์๋ฏธํ๋ค.
๋ฌผ๋ก ํ๋ก์ ํธ๋ง๋ค ํ์ฌ๋ง๋ค ๊ทธ ์คํ์ผ์ ์ฐจ์ด๊ฐ ์์ง๋ง ๊ณตํต์ ์ผ๋ก ์น ํ์ค์ ์งํค๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋๊ฒ์ผ๋ก ๋ณด์ฌ์ง๋ค. ์ด๋ฅผ ํตํด ์์ค๋ฅผ ์ดํด๋ณด๋๋ผ๋ ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ํด๋น ๋ถ๋ถ๋ค์ ์ฝ๋ ํ์ ์ด ์ฉ์ดํ๋ค.
์น ํ์ค์ ์ฅ์
โข
์์ ๋ฐ ์ด์๊ด๋ฆฌ ์ฉ์ด
โข
์ ๊ทผ์ฑ ํฅ์
[Node.js] 4. ์นํ์ค๊ณผ ๊ฐ๋จ ๋ ์ด์์ ๊ตฌ์กฐํ
View Template Engine์ด๋?
์น ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ๋ ๋งํฌ์ ์ธ์ด(Markup Language)๋ HTML์ด๋ฉฐ, ์ด๋ ์ ์ ์ธ ์ธ์ด. ๋ฐ๋ผ์, Javascript์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋์ ์ฐ์ฐ์ HTML๋ก ํํํ๋ ค๋ฉด ์ง์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
โข
ํ ํ๋ฆฟ ์์ง(Temlplate Engine)
์ ์์์ ์ธ๊ธํ ๋ถํธํ ์ํฉ์ ํด์์ํค๊ธฐ ์ํ ๋๊ตฌ
โข
ํ ํ๋ฆฟ ํ๋ก์ธ์๋ฅผ ์ด์ฉํ์ฌ
์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๊ตฌํํ ์ ์๋ ์์คํ
โข
Node.js์ ๋ํ์ ์ธ ํ ํ๋ฆฟ ์์ง์ผ๋ก๋ Pug(Jade), EJS, Handlebars ๋ฑ์ด ์์
โข
ํ ํ๋ฆฟ ์์ง์ ์น ํ ํ๋ฆฟ๋ค๊ณผ ์น ์ปจํ ์ธ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ์ํํธ์จ์ด
โข
ํ ํ๋ฆฟ ์์ง์ view code(html)์ data logic code(db connection)์ ๋ถ๋ฆฌํด์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ค.
โข
ํ์์ฑ
Express์ ๋ทฐ ํ ํ๋ฆฟ ์์ง
Express์์์ ๋ทฐ ํ ํ๋ฆฟ ์์ง ์์ ๊ณต์๋ฌธ์์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Pug๋ผ๋ ๋ทฐ์์ง์ ์ฌ์ฉํ๋ ์ค์ต ์ฝ๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ํ์ง๋ง Pug๋ผ๋ ๋ทฐ ์์ง์ ๋ํด์ ์ฒ์ ๋ค์ด๋ณด์๊ธฐ ๋๋ฌธ์ ์ ๋ณด๊ฐ ํ์ํ๋ค.
Java๋ฅผ ๋ฐฐ์ฐ๋ฉด์๋ JSP, Thymeleaf, Mustache ๋ฑ ์ฌ๋ฌ ๋ทฐ ํ ํ๋ฆฟ ์์ง์ด ์์๊ณ ํนํ ๋ฌธ๋ฒ๋ค์ ์ฐจ์ด๊ฐ ์์ ์ ์์ด์ ๋ทฐ ํ ํ๋ฆฟ ์์ง๋ ๊ทธ ๋ถ๋ถ์ ๋จผ์ ์ดํด๋ณผ ํ์๊ฐ ์์๋ค.
Express์ ํจ๊ป ํ ํ๋ฆฌํธ ์์ง ์ฌ์ฉ
[Node.js] 3. ๋ทฐ ํ ํ๋ฆฟ ์์ง๋น๊ต์ EJS ์ฌ์ฉ
Express ์ฒซ ์์
npm ๊ณต์ ํํ์ด์ง๋ฅผ ํตํด ๋ค์ํ Node.js ํจํค์ง๋ค์ ๊ฒ์ํ ์ ์๋ค. ์ด์ค Express๋ผ๋ ์น ํ๋ ์์ํฌ ํจํค์ง๋ฅผ ์ค์นํ์๋ค.
npm: express
Fast, unopinionated, minimalist web framework. Latest version: 4.18.2, last published: a year ago. Start using express in your project by running `npm i express`. There are 75468 other projects in the npm registry using express.
๋ผ์ฐํธ ํจ์์ ๊ตฌ์กฐ
๋ผ์ฐํ
์ URI(๋๋ ๊ฒฝ๋ก) ๋ฐ ํน์ ํ HTTP ์์ฒญ ๋ฉ์๋(GET, POST ๋ฑ)์ธ ํน์ ์๋ํฌ์ธํธ์ ๋ํ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ตํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ค.
๊ธฐ๋ณธ์ ์ธ ๋ผ์ฐํธ ํจ์์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
โข
app
์ย
express
์ ์ธ์คํด์ค
โข
METHOD
๋ย
HTTP ์์ฒญ ๋ฉ์๋
์ข ๋ฅ
โข
PATH
๋ ์๋ฒ์์์ URL ๊ฒฝ๋ก(์๋ํฌ์ธํธ)
โข
HANDLER
๋ ๋ผ์ฐํธ๊ฐ ์ผ์นํ ๋ ์คํ๋๋ ํจ์
๊ณต์ ๋ฌธ์์์ ํ์ธํ ์ ์๋ CRUD์ ํ์์ ์ธ ์์ฒญ ์ํ์ ๋ค์๊ณผ ๊ฐ๋ค. ํ์ง๋ง ์ฐ์ Express๋ฅผ ํตํด ์๋ฒ๋ฅผ ์คํ ์ํค๋ ๋ถ๋ถ์ ํ์ธํด์ผ ํ๋ฏ๋ก ์๋
๋ถํฐ ์งํ ํ๋ฉด์ ์๋ ์์ ๋ฅผ ๋ค๋ค๋ณด๊ณ ์ ํ๋ค.
[Node.js] 2. Express์ HTTP ๋ผ์ฐํ ํจ์ ๊ธฐ์ด
Node.js๋?
Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์์ ๋๋ค. -Node.js๋ ๊ณต์ ํํ์ด์ง-
Node.js
๋ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐย
JavaScript ๋ฐํ์
์ด๋ค. - MDN
โข
JavaScript๋ HTML์ ๋์ (Dynamic)ํ๊ฒ ๋ฐ๊ฟ์ฃผ๋ ๊ธฐ๋ฅ์ ํ๊ฒ ํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
โข
2008๋ ์ ๊ตฌ๊ธ์ด V8 ์์ง์ ์ฌ์ฉํ์ฌ ํฌ๋กฌ์ ์ถ์ํ๋๋ฐ, V8 ์์ง์ ์์ฒญ ๋นจ๋๊ณ , ์คํ ์์ค๋ก ์ฝ๋๋ ๊ณต๊ฐ๋์. ๊ทธ ๊ธฐ๋ฅ์ ์ข ๋ ๋ํด์ V8 ์์ง ๊ธฐ๋ฐ์ ๋ ธ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ณ ,ย
Node.js(V8)
์ด ๋ฑ์ฅํ๋ค.
โข
์น ์๋ฒ์ ๊ฐ์ด ํ์ฅ์ฑ ์๋ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ ์ ์์ ์ํด ๊ณ ์๋์๋ค.
์ฝ๊ฒ ๋งํด JavaScript ๊ธฐ๋ฐ ๋ฐํ์ ํ๊ฒฝ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ด์์ ๋ง๊ณ ๋ ๋ค๋ฅธ ํ๊ฒฝ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ์คํํ๊ฒฝ์ด๋ค.
Node.js๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ปดํจํฐ์์ ์ฝ๊ฒ ์คํ์์ผ์คฌ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ค.
Node.js๋ฅผ ์๋ฒ๋ก ๋ง๋๋ ์ด์ ?
Node.js์ ํต์ฌ์ ํฌ๊ฒ 3๊ฐ์ง์ด๋ค.
1.
Non-blocking I/O
[Node.js] 1. ๊ธฐ๋ณธ ํ๊ฒฝ๊ตฌ์ถ ๋ฐ Express ํ๋ ์์ํฌ ์ค์น