본문 바로가기

Node.js

express 라이브러리 이용해서 서버 만들기

반응형
SMALL

express 라이브러리를 설치해서 서버를 만들어보았다.

npm init -y를 통해서 package.json을 만들어주고,

npm install express를 통해서 express 라이브러리를 설치했다.

server.js파일을 하나 만들고,

const express = require('express');

const app = express();
const PORT = 8080;

app.use(express.static(__dirname + '/public'));

app.listen(PORT, () => {
    console.log(`http://localhost:${PORT} 에서 서버 실행중`);
});

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

app.get('/news', (req, res) => {
    res.send('뉴스 페이지다');
});

app.get('/shop', (req, res) => {
    res.send('쇼핑페이지입니다.');
});

app.get('/about', (req, res) => {
    res.sendFile(__dirname + '/about.html');
});

이렇게 예제를 작성해보았다.

package.json에 "type": "module"을 추가하면 import를 사용할 수 있지만,
문자가 아니라 파일을 내보낼 때에 코드가 지저분해지는 것 같아서 추가하지 않았다.

아무튼 express를 가져와서 express()를 가져온 다음, 포트를 설정해주고 실행을 하면 서버가 열리고,
경로별로 유저가 접근하면 데이터를 전달하는 형태로 단순하게 동작하는 것 같다.

get은 해당 경로에 접근했을 때, 콜백함수를 실행하는 구조였는데,
콜백함수는 매개변수로 req(요청)res(응답)을 가지고 있었고,
테스트는 해보지 않았지만, req를 이용해서 조건식을 만들면, 요청에 따라 다른 동작을 만들 수 있을 것 같았다.

내 테스트 코드에서는 res를 통해서 sendsendFile 메소드를 호출해서 문자나 파일을 전송했다.

파일을 전송할 때에는 __dirname 키워드를 이용해서 보냈다. __dirname은 프로젝트의 루트 경로를 뜻한다고 한다.

css파일이나, js파일을 넘겨줄 때에는 use메소드를 이용해서 폴더를 하나 등록해줘야한다고 한다.
link태그를 통해 html 파일에 css파일을 등록할 때에는 server.js 파일에 등록한 최상위 폴더 명을 제거하고 href에 넣어줘야한다고 한다.

반응형
LIST