๋ทฐ์ ํ ํ๋ฆฟ์ ์ฐ๊ฒฐ
ํ ํ๋ฆฟ ์์ง์ Express.js๊ฐ ๋ทฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ฝ์ ์ ์๋ HTML ํ์ด์ง๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉํ๋ ์์ง์ด๋ค.
ํ ํ๋ฆฟ์ ์ฌ์ฉ์ผ๋ก ๋ทฐ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ์ฝ๋ฉ์ ํ ์ ์๋ค.
ํจํค์ง ๋ค์ด๋ก๋๋ฅผ ์ํด
npm install ejs --save ๋ช ๋ น์ ์คํํ์ฌ ejs ํจํค์ง๋ฅผ ์ค์นํ๋ค.
์ด์ ejs๋ฅผ ํ ํ๋ฆฟ์ฉ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์๋ ค์ฃผ๊ธฐ ์ํด, main.js ์๋์
app.set("view engine", "ejs")๋ฅผ ์ถ๊ฐํ๋ค.
๊ทธ๋ผ ์ฝ๋๋ ์ด๋ ๊ฒ ๋๋ค.
์ฒ์์ app.set("view engine", "ejs") ์ฝ๋ ์ถ๊ฐ ์ํ ์ํ๋ก ์คํ์์ผ์ ์ค๋ฅ๊ฐ ๊ณ์ ๋ฌ์๋ค. ์ฝ์ง;;
views ํด๋ ๋ฐ์ index.ejs ํ์ผ์ ๋ง๋ค๊ณ ๊ฐ๋จํ๊ฒ ์์ ๊ฐ์ด html ์ฝ๋๋ฅผ ์งฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ์ปจํธ๋กค๋ฌ. ๋ฐ์ respondWithName ์ด๋ผ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ถ๊ฐํ์ฌ ๋ทฐ๋ฅผ ๋๋๋ง ํ๋ค.
๊ทธ๋ผ ์ด์ index.js์ 40ํ
app.get("/name", helloController.respondWithName)
์ฝ๋๊ฐ ์คํ๋์ด url์ localhost:3000/name์ ์ ๋ ฅํ๋ฉด,
๊ฒฐ๊ณผ๊ฐ ์ด๋ ๊ฒ ์ ๋์จ๋ค.
์ปจํธ๋กค๋ฌ๋ถํฐ์ ๋ฐ์ดํฐ ์ ๋ฌ
๋ผ์ฐํธ๋ฅผ ๋ณ๊ฒฝํด ๊ฒฝ๋ก์์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์จ ๋ค์ ํด๋น ๋งค๊ฐ๋ณ์๋ฅผ ๋ทฐ๋ก ๋ณด๋ธ๋ค.
JavaScript ๊ฐ์ฒด ๋ด์์ ๋ณ์๋ฅผ ์ ๋ฌํ๋ฉด ๋๋ค. ์ด๋ฆ์ ๋ทฐ์์์ ๋ณ์์ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํ๋ค.
๋ผ์ฐํธ์ ์ฝ๋๋
์ด๋ ๊ฒ ๋๋ค.
์ด์ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
์ด๋ ๊ฒ ์์ฒญ ๋งค๊ฐ๋ณ์๋ก ์ง์ฐ ๋ณ์๋ฅผ ํ ๋นํ๊ณ , ๋ ๋๋ง ๋ ๋ทฐ๋ก ๊ทธ ๋ณ์(name)๋ฅผ ์ ๋ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ index.ejs์์๋
<let name = "Jon"; %>์ ์ญ์ ํ๊ณ
์ด๋ ๊ฒ๋ง ์ฝ๋๋ฅผ ์์ ํ๋ค.
์ด๋ ๊ฒ ๋ค ๊ณ ์น๊ณ ๋๋ ค๋ณธ ์คํ ๊ฒฐ๊ณผ๋
์ ๋์จ๋ค.
์์ ๋ฐ ๋ ์ด์์ ์ค์
๋ ์ด์์์ด๋ ์น ์ฌ์ดํธ๋ฅผ ํ์ํ ๋ ํ์ด์ง๋ง๋ค ๋ณ๋๋์ง ์๋ ์ปจํ ์ธ ๋ฅผ ๋งํ๋ค.
๋ ์ด์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋จผ์ express-ejs-layouts ํจํค์ง๋ฅผ ์ค์นํ๋ค.
npm install express-ejs-layouts --save ๋ช ๋ น์ ์คํํ๋ค.
ํจํค์ง๊ฐ ๋ค ์ค์น๋์์ผ๋ฉด, index.ejs ์์
const layouts = require("express-ejs-layout")์ ์ ์ธํ๊ณ ,
Express.js๊ฐ ์ด ํจํค์ง๋ฅผ ์ถ๊ฐ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉํ๋๋ก main.js์ app.use(layouts)๋ฅผ ์๋์ ๊ฐ์ด ์ถ๊ฐํ๋ค.
**์ด๋ app.use(layouts)๋ app.get("/name/:myName", homeController.respondWithName) ๋ณด๋ค ์์ ์์นํด์ผํ๋ค.
๋ค์๋ค๊ฐ ์ ์ธํ๋๊น ์ ์ฉ์ด ์๋์...
์ํผ ์ด๋ ๊ฒ ์ฝ๋ฉํด์ฃผ๊ณ , views ํด๋์ layout.ejs ํ์ผ์ ๋ง๋ค์ด์
์ด๋ ๊ฒ ๋ง๋ค์ด์ค๋ค.
๊ทธ๋ฌ๋ฉด <%-body%> ์ฐ์ฐ์ ์ํด ์ ์๋ฆฌ์๋ index.ejs๊ฐ ๋ค์ด์ค๊ฒ ๋๊ณ , ํ๋ฉด์
์ด๋ ๊ฒ ๋๋ค.
๋ง์ฝ ์์๋ฅผ ๋ฐ๋ก ์ถ๊ฐํ๊ณ ์ถ์ผ๋ฉด ejs ํ์ผ์ ์์ฑํ ํ,
์) <% include particials/navigation %>๋ก ํฌํจ์ํฌ ์ ์๋ค.
ํค์๋ include๋ ์ ๊ณต๋ ์๋๊ฒฝ๋ก์์ ์์๋ฅผ ์ฐพ์์ ๋ ๋๋ง ํด์ค๋ค.
๊ทผ๋ฐ ejs v3.0 ์ด์๋ถํฐ๋ ๋ฌธ๋ฒ์ด ๋ฐ๊ปด์ <%- include ("particials/navigation") %>์ผ๋ก ํด์ผํ๋ค๊ณ ํ๋ค.
์ด๋ ๊ฒ ํ๋๋ฐ๋ ์๊พธ ์ด์ํ ์ค๋ฅ๋์ ๋ด์ผ ๋ค์ ํด๋ด์ผ๊ฒ ์ ์ง๊ธ์ ์ง์ค๋ ฅ ์์ค..
(+ 21.10.25 17:51 ์์ )
์ค๋ฅ ๋ฉ์์ง ์ฝ์ด๋ณด๋ฉด ๋ฌธ๋ฒ์ด ์๋ชป ๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ๊ฒฝ๋ก์ ํด๋นํ๋ ํ์ผ์ ๋ชป์ฐพ์๋ค๊ณ ํ๋๊ฑฐ๋ผ์ ๊ฒฝ๋ก๋ฅผ ์๋๊ฒฝ๋ก๋ก ๋ง์ถฐ์
์ด๋ ๊ฒ ์ ์ด์คฌ๋๋
์์ฃผ ์ ์ถ๋ ฅ๋จ...
'โ๏ธ 21-2 IPP > Node.js study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js - 13 Express.js๋ฅผ ํตํ ์ฌ์ดํธ ๊ฐ์ (0) | 2021.10.27 |
---|---|
Node.js - 12 ์ค์ ๊ณผ ์๋ฌ์ฒ๋ฆฌ (0) | 2021.10.26 |
Node.js - 10 Express.js (0) | 2021.10.21 |
Node.js - 9 ์บก์คํค ํ๋ก์ ํธ: ์ฒซ๋ฒ์งธ ์น (0) | 2021.10.21 |
Node.js - 8 ์์ , ๋ผ์ฐํธ exports (0) | 2021.10.15 |
๋๊ธ