2022년 11월 01일
수정하기
문서 생성 2022-11-01 22:58:53 최근 수정 2022-11-01 23:46:28
📚 오늘 도전하고, 배운 것
🤔 학습하면서 궁금하거나 어려웠던 점
세션 기반 인증과 토큰 기반 인증에 대해 학습했지만 토큰 기반 인증은 다뤄보지 못해서 매우 애매한 상태다. 내일 직접 사용해볼 수 있었으면 좋겠다.
express-generator
로 생성한 프로젝트 구조를 실행할 때 미리 세팅된bin/www
를 실행한다. 바빠서 그냥 서버 실행을 이렇게 하는구나 하고 넘어갔는데 왜 이래야 하는지 궁금해졌다. 검색 결과 는 다음과 같다.- app.js는 모든 middleware(body-parser, morgan 등)와 rotutes를 포함한다.
- 마지막엔
app
객체로 export된다.
- 마지막엔
- www 는 httpServer를 만들고 앱을 핸들러로 전달한다.
- Port도 설정한다.
server.listen(port)
- 그리고 서버 시작시 발생하는 오류를 처리하기 위한 함수도 설정한다.
server.on('error', onError)
- Port도 설정한다.
- 결국. app.js에서 모든 생성 및 시작 서버 코드를 제거하고 애플리케이션 로직 부분에만 집중할 수 있다!
- 그래서 package.json 파일에
node ./bin/www
로 서버를 실행한다. - 왜
www.js
가 아니라www
인지도 궁금했다.- 실행 파일에 extension이 붙지 않는 것은 Unix의 전통이라고 한다.
- 예를 들어
ls
명령어를 입력할 때ls.exe
라고 하지 않는 것처럼!
- 예를 들어
- 파일을 실행가능한 것으로 표시하기 위해 파일 첫 줄에 다음 코드가 포함된다.
#!
- 그러면 Shell은
#!
를 제외한 첫줄의 나머지 코드를 실행한다.- 이건 shbang 라인이라고 부른다고 한다. (sh = shell,
!
= bang)
- 이건 shbang 라인이라고 부른다고 한다. (sh = shell,
- 따라서,
bin/www
파일을 살펴보면 첫 줄에#! /user/bin/env node
를 살펴볼 수 있는데env
명령은 node의 올바른 설치 경로를 찾는 것이라 한다.
- 실행 파일에 extension이 붙지 않는 것은 Unix의 전통이라고 한다.
- 재밌는 표현이 있었다. ".js로 끝나는 프로그램을 만드는 것은 '전문적'으로 보이지 않는다." 예를 들면,
npm
을 실행할 때npm.js
를 입력하지 않는 것처럼 말이다. 왜 붙이지 않았는지 이제 좀 와닿았다. 관습이다.
- app.js는 모든 middleware(body-parser, morgan 등)와 rotutes를 포함한다.
🌅 내일은 무엇을?
- 토이 프로젝트 작업
- 코딩 테스트 문제 풀기 (4문제)
✒️ log
- 30분 뛰었다. 거의 3일을 쉬어서 그런지 너무 힘들었다. 저녁엔 피곤해서 졸음이 몰려왔는데 다행히 집에 손님이 오셔서 잘 수가 없었다.