study/Node 🐯

Node - 1

서나쓰 2021. 4. 26. 14:04
728x90

node.js 시작하기

사용 환경 : macos

npm init
-> node 사용하기 위한 기초 작업 : 해당 작업 위치 초기화, 설치 완료시 pakage.json 설치

npm install express --save
-> express 서버 사용 위한 패키지 설치 [--save] 옵션은 pakage.json에 등록 위한 옵션
  • 서버 실행을 위한 app.js 작성
var express = require('express')
var app = express()

app.listen(3000, function() {
    console.log("start!! express server on port 3000");
});

  • 서버 실행 명령어
node app.js
-> 내용이 변경될 때마다 계속 재구동을 해야 한다

nodemon app.js
-> 내용이 변경될 때 자동으로 서버가 refresh 된다
💡 노드는 기본적으로 3000포트 사용

Get 방식의 호출

var express = require('express')
var app = express()

app.listen(3000, function() {
    console.log("start!! express server on port 3000");
});

app.use(express.static('public'))

//url routing
app.get('/', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})

app.get('/main', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})
  • app.get 으로 get의 요청 처리
  • static 폴더 지정하여 resource들을 전부 경로 지정해주지 않아도 사용할 수 있다.
  • → 주로 js, image, css 등을 불러올 때 사용
  • '__dirname' 은 현재 위치의 루트 위치를 말한다

❗ 코드에 에러가 있는 경우 서버 창에서 어디에서 에러가 있는지 확인 가능


POST 방식 호출

var express = require('express')
var app = express()
var bodyParser = require('body-parser')

app.listen(3000, function() {
    console.log("start!! express server on port 3000");
});

app.use(express.static('public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))

//url routing
app.get('/', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})

app.get('/main', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})

app.post('/email_post', function(req, res) {
    //get : req.param('email')
    console.log(req.body.email)
    res.send("<h1>Welcom ! " + req.body.email+"</h1>" )
})
  • post 방식은 app.post로 경로 지정
  • get은 node 내장 객체인 param으로 불러올 수 있지만 post는 불가능
  • body-parser라는 패키지 설처하여서 파라미터 파싱할 수 있다
  • body-parser 사용을 위해 최상단에 사용하는 것 정의해 주기
  • 받아온 객체를 응답할 때는 req.body 로 요청 확인 → Object(json)형태로 전달된다


View engine

  • express view engine을 사용하여 template를 이용할 수 있다
  • → 실습을 위해 ejs를 사용했지만, 다양한 view engine이 있으니 골라 사용하면 된다. (사용법은 인터넷에 다 있다)

var express = require('express')
var app = express()
var bodyParser = require('body-parser')

app.listen(3000, function() {
    console.log("start!! express server on port 3000");
});

app.use(express.static('public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))
app.set('view engine', 'ejs')

//url routing
app.get('/', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})

app.get('/main', function(req, res) {
    res.sendFile(__dirname + "/public/main.html")
})

app.post('/email_post', function(req, res) {
    //get : req.param('email')
    console.log(req.body.email)
    //res.send("<h1>Welcom ! " + req.body.email+"</h1>" )
    res.render('email.ejs', {'email':req.body.email})
})
  • view engine 사용을 위해 app.set() 사용
  • view를 연결할 때는 'render' 사용하여 연결

→ 템플릿에서 사용하는 치환자를 바꿔달라는 의미

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>email ejs template</title>
</head>
<body>
    <h1>Welcome <%= email %></h1>

    <p>정말로 반가워용</p>
</body>
</html>
💡 node를 깃에 올릴 때 nodemodule은 올리지 않는다. 그래서 pakage.json를 읽어들여서 'npm install'을 진행하면 pakage에 있는 의존성 패키지들을 읽어와 다운로드를 한다.

 

- 위 강좌는 인프런 node 시작하기 강좌를 토대로 공부하였습니다.

728x90