HTTP 프로토콜로 요청하는 내용과 응답을 모두 처리 가능
listen(port, [hostname], [backlog], [callback])
서버를 실행하여 대기시킴
var http = require('http');
// 웹 서버 객체를 만든다
var server = http.createServer();
// 3000 포트로 요청 대기 포트 지정
var port = 3000;
server.listen(port,function(){
console.log("웹 서버 시작 ",port);
});
클라이언트가 웹 서버 요청 시 발생하는 이벤트
리소스를 다루는 행위
// 서버 객체 생성
var server = http.cresteServer();
// 클라이언트 접속 대기(listening)
server.listen(PORT);
var http = require('http');
// 웹 서버 객체를 만듭니다.
var server = http.createServer();
// 웹 서버를 시작하여 3000번 포트에서 대기하도록 설정
var port = 3000;
server.listen(port, function() {
console.log('웹 서버가 시작 되었습니다. %d', port);
});
// 클라이언트 연결 이벤트 처리
server.on('connection', function(socket) {
var addr = socket.address();
console.log('클라이언트가 접속했다. : %s, %d', addr.address, addr.prot);
});
// 클라이언트 요청 이벤트 처리
server.on('request', function(req, res) {
console.log('클라이언트 요청이 들어왔습니다.');
console.dir(req);
});
// 서버 종료 이벤트 처리
server.on('close', function() {
console.log('서버가 종료 됩니다.');
});
writeHead(statusCode [,statusMessage][, headers])
write(chunk[, encoding][,callback])
end([data][, encoding][, callback])
express 모듈을 설치해준다.
npm install express
// express 기본 모듈
const http = require("http");
const express = require("express");
const app = express();
app.get('/', (req, res) => {
res.send('Hello World')
});
서버 구동을 위한 기본 코드이다!
server.js 상단에 const express = require("express");
로 express 모듈을 선언해준다.
const app = express();
app이라는 변수에 express 모듈을 호출한다.
app.set("views",__dirname + '/views');
app.set('view engine', 'ejs');
ejs 모듈을 설치한 후 server.js 상단에 뷰 엔진을 사용하기 위한 선언을 해준다. 첫번째 줄 코드에서 경로를 지정해주고 다음 코드로 뷰 엔진으로 ejs를 사용하겠다는 선언을 했다.
경로를 지정한 곳인 view 폴더 안에 ejs 파일을 생성하였다.
req.app.render("뷰파일", data, 콜백함수(err,data){});
서버에서 클라이언트로 뷰엔진을 이용하여 문서를 생성하여 보낼때 render() 함수를 이용한다. 이것은 뷰 엔진을 이용하여 html을 빌드하여 응답으로 보내주는 기능을 한다.
//server.js
const carList = [
{no:1, title:"SONATA", price:3000, company:"HYUNDAI", year:2022},
{no:2, title:"GRANDEUR", price:4000, company:"HYUNDAI", year:2019},
{no:3, title:"K9", price:7000, company:"KIA", year:2020}
];
// ejs 템플릿 뷰 엔진 사용
app.get("/car",(req,res)=>{
// req.app.render(뷰파일, data, 콜백함수(err,data){});
let userName = "홍길동";
req.app.render("car",{userName, carList},(err,data)=>{
if(err){console.log(err); return;}
res.end(data);
});
});
위는 server.js 코드이다. 서버에 '/car' url로 get요청이 들어오면 서버에 선언된 데이터 carList와 userName을 각각의 데이터 이름으로 /views/car.ejs 경로의 파일에 렌더링된다.
//car.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<% console.log(userName); %>
</head>
<body>
<h1>중고 자동차 쇼핑몰</h1>
<% for(var car of carList){ %>
<p>
<%=car.no %>, <%=car.title %>, <%=car.price %>, <%=car.company %>, <%=car.year %>
</p>
<% } //end
%>
</body>
</html>
ejs 문법
<% js 코드 %> - 자바스크립트 사용 시
<%= 변수명 %> - 전달받은 데이터를 변수로 사용 시
ejs 파일에서는 서버에서 전달된 데이터를 ejs 문법을 사용하여 다음과 같이 활용할 수 있다.