Node js 시작하기

이율곡·2023년 1월 9일
0

Node js

목록 보기
1/26
post-thumbnail

Node js를 선택한 이유

Javascript로 프론트엔드와 백엔드를 다 다룰 수 있다는 큰 장점이 있기 때문이다. 물론 Javascript에 대한 가치가 크기도 하지만 한 가지 언어로 웹을 만들 수 있다는 것이 마음에 들었다. 하나부터 열가지 다시 공부를 해야 하지만 아주 약간의 기초가 있기 때문에 해볼 자신이 있다.

공부방법

01. 강의

Node js에 대한 기본이 없기 때문에 강의를 듣는다. 그리고 강의가 편하다. 쉽게 알려주기도 하고 보고 들으면서 따라 작성하면 이해도 빠르다는 장점이 있기 때문이다.

https://www.udemy.com/course/nodejs-mvc-rest-apis-graphql-deno/

Node js를 듣는 강의이다. 유데미를 애용하는데 평생수강이 가능해서 할인할 때 듣고 싶은 강의를 사둔다.

02. Velog로 기록하기

그날 그날 공부한 내용들을 짧게라도 기록을 하려 한다. 과거 읽은 책중에 기억에 남는 문구가 있다.

인풋(Input)보다 아웃풋(output)이 중요하다. 비율은 3:7 정도이다.

이전까지 나는 인풋만을 해왔지만, 개발을 본격적으로 하기 시작하면서 이 말을 잘 느끼고 있다. 그렇기 때문에 배운 내용을 꾸준히 기록하면서 공부한 것들을 잘 활용할 줄 아는 사람이 되어야겠다.

03. 프로젝트 전 하위 프로그램 만들기

4월까지 만들고 싶은 프로젝트가 있기 때문에 필요한 기능들이 너무 많다. 그래서 강의에서 배운 내용을 바탕으로 프로젝트에 필요한 기능들을 만들려 한다.

오늘 배운 내용

개념

Node js에 대한 이해와 개념을 배웠다. 스크립트 언어이니, 이벤트 기반, 이벤트 루프, 싱글 스레드 등에 대해 배웠다. 개념은 백엔드 서버 개발자로써는 알아야 할 중요한 부분이다. 하지만 처음부터 이런 부분을 배우니까 공부할 의욕이 뚝뚝 떨어졌다. 무슨 이야기인지 모르겠고 일단은 어려웠다. 그래도 배우면서 Node js의 핵심이라고 생각한 점은 CPU에 부하가 적은 프로그램에 유용하다는 것이다.

기초

요청과 응답

본격적으로 Node js를 배우기 전에 웹이 어떻게 돌아가는지에 대해 배웠다. request가 들어오고 서버에서는 클라이언트에게 어떤 방식으로 response하는지를 코드 작성을 해보았다.(아직 Express 프레임워크는 사용하지 않았다)

app.js

const http = require("http");

const routes = require('./routes');

const server = http.createServer(routes);

server.listen(3000);

routes.js

const fs = require("fs");

const requestHandler = (req, res) => {
  const url = req.url;
  const method = req.method;
  if (url === "/") {
    res.write("<html>");
    res.write("<head><title>Web Page</title></head>");
    res.write(
      "<body><form action='/message' method='post'><input type='text' name='message'><button>submit</button></form></body>"
    );
    res.write("</html>");
    return res.end();
  }
  if (url === "/message" && method === "POST") {
    const body = [];
    req.on("data", (chunk) => {
      console.log(chunk);
      body.push(chunk);
    });
    return req.on("end", () => {
      const parsedBody = Buffer.concat(body).toString();
      const message = parsedBody.split("=")[1];
      fs.writeFile("message.txt", message, (err) => {
        res.statusCode = 302;
        res.setHeader("Location", "/");
        return res.end();
      });
    });
  }
  res.write("<html>");
  res.write("<head><title>Web Page</title></head>");
  res.write("<body><h1>Hello World!!</h1></body>");
  res.write("</html>");
  res.end();
};

module.exports = requestHandler;

위의 코드는 사용자가 텍스트 박스에 값을 넣어 보내면 서버에서는 그 내용을 .txt형식으로 저장하는 코드이다. 여기서 중요한 점은 사용자가 보낸 값이 서버에 어떤 형태로 들어오며, 이를 어떻게 활용하여 저장하는지를 이해하는 점이었다.

chunk는 우리가 일반적으로 다룰 수 있는 데이터 형태가 아니기 때문에 이를 Buffer에 문자열로 붙여주면, 사용자가 보낸 데이터를 다룰 수 있게 된다는 점이 중요하다.

그리고 Node js의 routes이며 이는 외부에 코드를 보여주지 않게 하여 쉽게 수정이 불가능하게 해준다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글