-
express 설치Project using node.js/Cloning Youtube 2020. 8. 19. 10:49
소개
프로젝트를 진행하기 위해서는 어떤 언어를 사용할 것인지, 어떤 라이브러리를 사용할 것인지, 마지막으로 어떤 프레임워크를 사용할 것인지를 결정해야 한다. 물론 프레임워크를 사용하지 않고 웹 서버를 만들 수 있지만 정말 좋은 툴을 누군가가 만들어줬고 수 많은 사람들에게 실용성과 안정성을 검증받았는데 안 쓸 이유가 없지 않겠는가? 대표적인 node.js를 이용한 웹 서버 프레임워크로 express를 소개한다.
express말고도 다른 웹 서버 프레임워크가 있지만, npm 패키지의 다운로드 횟수가 다른 프레임워크보다 압도적으로 높기 때문에 굳이 다른 프레임워크를 사용할 이유가 없다. 설치는 'npm i express'다.
사용 방법은 expressjs에서 알려주는 방법대로 코드를 작성하면 된다. 나는 init.js와 app.js 파일을 만든 후에 코드를 두 파일에 나눠서 작성했다.
1 : './app'을 import를 한다. 그러면 app.js init.js의 진행을 멈추고 './app'파일 안에 있는 코드를 먼저 실행한다. './app' 파일도 import를 했다면 './app' 파일도 import를 한 파일들을 먼저 실행한다. 그 후에 작성된 소스 코드를 실행하고 실행이 끝나면 init.js로 돌아온다.
2~9 : port번호를 6000번을 할당했다. app.listen이 6000번 port로 서버를 연결하고 성공적으로 연결이 됬다면 handleListen() callback 함수를 실행시킨다.
1 : express 모듈을 import 한다.
2~7 : app에 express()를 할당하고 사용자가 '/' 경로로 접속하면 app.get의 2번째 인자인 callback 함수를 실행시킨다. res. send('Hello World!')가 실행되면 '/' 페이지에 Hello World!를 출력한다.
9 : 다른 파일들이 app.js 를 사용할 수 있도록 export한다. 여기서 export default라고 하였는데, 나중에 export default와 단순히 export는 차이가 있다. controller를 만들 때 export와 export default의 차이를 설명하겠다. 지금은 그냥 넘어가도 괜찮다.
물론 실행하면 안 될 것이다. 왜냐하면 브라우저가 ES6의 import 문법을 모륵 때문이다. 그래서 expressjs 사이트에서도 import가 아닌 require을 사용했다. import 문법은 modern JS에 추가된 다른 모듈을 사용할 수 있는 새로운 방법이다. import를 사용하기 위해서는 error message에 나온 대로 조치를 하던가 babel이라는 cross compiler를 사용하면 된다. babel을 사용하면 modern JS를 브라우저가 인식할 수 있는 옛날 JS로 바꿔준다. Babel 설명은 따로 블로그를 작성할 것이다.
init.js와 app.js를 import 대신에 require를 사용해서 코드를 다시 작성해보았다. export default도 인식하지 못 하므로 module.exports를 사용해서 app.js를 export 했다. 나의 localhost에서 6000번 PORT가 안 되는 것을 확인하여서 5001번 으로 바꿨다.
그리고 실행해보면 성공적으로 화면에 Hello World!가 보이는 것을 확인할 수가 있다.
참고 자료
- 노마드 코더의 유튜브 클론 강의
- Node.js 교과서 개정판 2판
- express 공식 사이트 : http://expressjs.com/en/starter/hello-world.html
- npm 패키지 다운로드 추이 확인 : https://npmtrends.com
소스 코드
https://github.com/zpskek/wetube-v3/commit/69b7b200f294bf26d00c58663dfd4f2a54dcda69
'Project using node.js > Cloning Youtube' 카테고리의 다른 글
babel (0) 2020.08.20 gitignore (0) 2020.08.19 npm 설치 및 세팅 (0) 2020.08.19 node.js 설치 (0) 2020.08.19 개요 (0) 2020.08.19