TIL_Express

jhin·2020년 5월 9일
0

IM19

목록 보기
15/21

드디어 익스프레스에 대해 블로깅을 하게 됐다.
1주? 2주? 잘은 모르겠지만 한참 만에 동굴 밖으로 나온 기분이다.
슬럼프에 빠져 하루하루를 허투루 보냈고, 게으름이 몸에 달라붙어 떨어지지 않았다.
그리고 5/9, 다시 '노력하는 하루'를 되찾게 됐다.
부디 다시 슬럼프가 오지 않기를 바란다. 할게 너무 많아서.

간단 명료하게 익스프레스에 대해 알아보겠다.

What is Express

익스프레스란 뭘까?
Express 는 가장 인기있는 Node(자바스크립트를 브라우저 밖에서 사용하게 해주는 환경) 웹 프레임워크이며, 다른 많은 인기있는 Node web frameworks(ex Feathers, ItemsAPI, KeystoneJS 등등..)의 기본 라이브러리이다...여기까지는 많이 들어봤다. 그런데 웹 프레임워크는 뭐고 라이브러리는 뭘까?

간단히 말해서 프레임워크란,

소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다.

그리고 라이브러리란,

자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합이다.

좀 더 쉽게 자동차에 비유하자면,

프레임워크는 자동차의 프레임, 기본적인 틀이자 토대가 되는 것이고,

라이브러리는 바퀴, 헤드라이트 등 기능을 하는 부품이 되는 것이다.

Why we use

이제 어느 정도 익스프레스가 무엇인지는 알 것 같다.
그렇다면 왜 익스프레스를 사용하는 지를 알아봐야 하지 않을까?
그러기 전에 먼저 익스프레스가 사용되는 환경인 Node.JS를 왜 사용하는 지에 대해 알 필요가 있다.

Node.JS를 사용하는 이유

  1. 서버 사이드와 클라이언트 사이드를 하나의 언어로 개발할 수 있다. Web 개발이라는 것은 어쨌든 곳곳의 언어를 조합하여 누더기 투성이로 만드는 있는 느낌이 든다. 하지만 Node.js를 사용하면 서버에서 클라이언트까지 모든 "JavaScript"만으로 만들 수 있다.

  2. 기존의 Web 서버의 문제의 해소한다. 지금까지 형태의 Web 서버는 액세스가 집중되면, 효율이 뚝 떨어져 버렸다. Node.js는 "이벤트 루프"방식을 채택하여, 스케일링(갑자기 맹렬한 액세스되거나 한 경우에도 대응할 수 있는 능력)에 뛰어나다는 것을 증명했다.

위와 같은 이유에 기반하여, 익스프레스를 사용하는 이유도 비슷하다.

  1. 효율적이다. 아무것도 그려지지 않은 제로에서 코드를 일일이 짜는 것보다 시간과 비용이 훨씬 절약되며 생산성이 좋아진다.

  2. 코드의 Quality 향상. 버그 발생 가능성을 처리해줌으로써 개발자가 반복 작업에서 실수하기 쉬운 부분을 커버해준다. 다수의 개발자가 사용하며 수정하다 보니 이미 검증된 코드라고 볼 수 있다.

  3. 유지 보수에 유리하다. 프레임워크를 쓰지 않고 일일이 코드를 짜 놓은 경우, 회사 입장에서 개발 담당자가 바뀌어버리면 곤란해진다. 그러나 프레임워크를 사용하면 코드가 보다 체계적이어서 담당자가 바뀌더라도 위험부담을 줄일 수 있으며 유지 보수에 안정적이다.

How we use

이제 왜 쓰는지 어느정도 알겠으니, 어떻게 사용하는 지를 알아보자.
먼저 npm install express를 통해 express를 다운받고, 편집키를 켠다.
그리고 server.js 파일을 만들고 가장 간단한 코드를 써보자.

//import 하기
const express = require("express");
//변수를 선언해서 express 를 실행하기
const app = express();
//포트 실행하기 (4000번 포트로 실행이 된다)
app.listen(4000);

위 코드를 저장하고 localhost:4000을 입력하면 다음과 같은 화면이 출력된다.

Cannot Get이라고 뜬 이유는 아직 router를 정의하지 않았기 때문이다.
Router에 대한 내용은 다음에 포스팅하겠다.

출처
https://developer.mozilla.org/ko/docs/Learn/Server-side/Express_Nodejs/Introduction
https://moolgogiheart.tistory.com/87
https://araikuma.tistory.com/452?category=782571
https://velopert.com/294

profile
Maktub.

0개의 댓글