- ํจํด๋ค์ ๊ตฌ๋ถํด ๊ฐ๋ฐํ๋ค.
- ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
- ์ ์ฐ์ฑ์ด ๋๋ค.
- ํ์ฅ์ฑ์ด ๋๋ค.
- ํ์ ์ ์ฉ์ดํ๋ค.
- ์๋ฒฝํ ์์กด์ฑ ๋ถ๋ฆฌ๊ฐ ์ด๋ ต๋ค.
- ์ค๊ณ ๋จ๊ณ๊ฐ ๋ณต์กํ๋ค.
- ์ค๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ํด๋์ค๊ฐ ๋ง์์ง๋ค.
Controller ๐ ์ปจํธ๋กค๋ฌ ๊ด๋ จ ํ์ผ
Model ๐ ๋ชจ๋ธ ๊ด๋ จ ํ์ผ
routes ๐ ๋ผ์ฐํธ ํ์ผ
uploads ๐ ์ด๋ฏธ์ง์ ๊ฐ์ ๋์ ํ์ผ ๊ด๋ฆฌ
views ๐ ๋ทฐ ๊ด๋ จ ejs ํ์ผ
index.js ๐ main ํ์ผ
Client๊ฐ Browser์ ์ ์ํ๋ค.
Browser: ํด๋น ํ๋ก์ ํธ์ index.js (main)ํ์ผ์ ์ฝ๋๋ค.
Router: app.use()๋ฅผ ํตํด ํ์ฌ ๋ค์ด์จ ๊ฒฝ๋ก์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. ์์ผ๋ฉด ํด๋น ๋ผ์ฐํฐ ํด๋ ์์ ๋ผ์ฐํฐ ํ์ผ์ ์ฝ๋๋ค. ๋ฐ๋ก ๋ผ์ฐํฐ ํ์ผ ๋ช ๊น์ง ๊ฒฝ๋ก๋ฅผ ์ ์ด์ฃผ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก index.js ํ์ผ์ ์ฝ๋๋ค. ๋ง์ฝ app.use()๊ฐ ์์ผ๋ฉด app.get()์ผ๋ก ๋์ด๊ฐ์ ์คํํ๋ค.
/* index.js */
const express = require("express");
const app = express();
const port = 8080;
const bodyParser = require("body-parser");
app.set("view engine", "ejs");
app.use( express.static( "uploads" ));
app.use(express.urlencoded({extended: true}));
app.use( bodyParser.json() );
// ๋ผ์ฐํธ ๋ชจ๋์ ๋ถ๋ฌ์จ๋ค.
const router = require("./routes");
// /user ๊ฒฝ๋ก๋ก ๋ค์ด์์ ๋ ๋ผ์ฐํธ์ index.js ํ์ผ์ ์ฝ๋๋ค.
app.use("/user", router);
app.get("/", function(req,res){
res.send("Index");
})
app.listen(port, () => {
console.log( "Server Port: ", port);
})
/* ./routes/index.js */
const express = require("express");
const userRouter = express.Router();
const user = require("../controller/UserController");
// /user๋ก ์ ์ํ์ ๋ UserController์ index ํจ์๊ฐ ์คํ
userRouter.get("/", user.index);
// /user/register๋ก ์ ์ํ์ ๋ UserController์ register ํจ์๊ฐ ์คํ
userRouter.get("/register", user.register);
// /user/register ์์ post ์์ฒญ์ผ๋ก ์ ์ํ๋ฉด UserController์ post_register ํจ์๊ฐ ์คํ
userRouter.post("/register", user.post_register);
// /user/login ์์ ์ ์ํ๋ฉด UserController์ login ํจ์๊ฐ ์คํ
userRouter.get("/login", user.login);
// /user/login ์์ post ์์ฒญ์ผ๋ก ์ ์ํ๋ฉด UserController์ post_login ํจ์๊ฐ ์คํ
userRouter.post("/login", user.post_login);
module.exports = userRouter;
/* ./controller/UserController.js */
const User = require("../model/User");
exports.index = (req, res) => {
// views ํด๋์ index.ejs ํ์ผ์ rendering ํ๋ค.
res.render("index");
}
exports.register = (req, res) => {
// views ํด๋์ register.ejs ํ์ผ์ rendering ํ๋ค.
res.render("register");
}
exports.post_register = (req, res) => {
// User model post_user()๋ก req.body ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค๋ค.
User.post_user(req.body);
res.send( "success_join" );
}
exports.login = (req, res) => {
// views ํด๋์ login.ejs ํ์ผ์ rendering ํ๋ค.
res.render( "login" );
}
exports.post_login = async (req, res) => {
// User model์ get_user() ํจ์๋ฅผ ์คํํ๊ณ ๊ฐ์ ๋ฐ์์จ๋ค.
var data = await User.get_user();
var info = data.split("//");
if (info[0] != req.body.id) {
res.send("์์ด๋ ๋ค๋ฆ");
} else if (info[2] != req.body.password) {
res.send("๋น๋ฐ๋ฒํธ๊ฐ ๋ค๋ฆ")
} else {
res.send("๋ก๊ทธ์ธ ์ฑ๊ณต!");
}
console.log( data );
}
/* ./model/User.js */
const fs = require("fs").promises;
exports.post_user = function( data ){
console.log( data );
const {id, password, name, age} = data;
fs.writeFile("./info.txt", `${id}//${password}//${name}//${age}`, (err) => {
if (err) {
console.log(err);
res.status(400).send("err!!");
}
});
}
exports.get_user = async function( data ){
var buffer = await fs.readFile("./info.txt");
return buffer.toString();
}