[NodeJS] 복습노트

cho yunsu·2021년 4월 3일
0

** NODE란 무엇인가? 백엔드 언어? 아님.. 자바스크립트 실행기.. 그이상 그이하도 아님.

  • nodemon: 서버를 매번 껐다켰다 할 필요없이 저장할때마다 다시 실행시켜주는 패키지. 개발자를 위한 것이므로 -D로 설치.

  • morgan: logging을 지원하는 middleware.

  • PUG 에서 자바스크립트 코드를 쓰려면 #{} 사용.

  • PUG 공통된 레이아웃을 만들고 그파일에 block 창문을 만듦. 사용 시, extend 후 block 아래에 추가부분 작성.

locals 미들웨어 만들기
1. local 변수를 global 변수로 사용하도록 해주는 것
2. local 기능을 통해 변수에 접근 가능
3. 라우터들 보다 상위에 위치시켜야 모든 라우터에도 공통적용이 가능함

###middleware.js 파일###
const localsMiddleware = (req, res, next)=>{
res.locals.siteName = "WeTube";
}
이런 식으로 만들었다 치면, locals 안에 있는 건 템플릿에 변수명 처럼 존재함.

locals에 로컬 변수를 저장하면 이 변수를 view안에 있는 템플릿(.pug파일)들에서 사용 할 수 있다 => 템플릿을 직접 수정하지 않고, locals 내부의 변수들만 수정하면 된다.
==>이 미들웨어는 코드 사이에 들어가 있기 때문에, next() 를 호출해야한다. 다음 함수들로 넘어가야하기 때문이다.
  • [ES6] 비구조화 할당 destructuring
    const {
    query: { term: searchingBy },
    } = req;

** const searchingBy = req.query.term 과 동일.

[ES6] 객체 리터럴 Enhanced Object Literals
{ pageTitle: "Search", searchingBy(:searchingBy )});

M1 맥북에서 Homebrew를 설치하고 mongoDB 설치하는 방법입니다.

✅ /usr/sbin/softwareupdate --install-rosetta --agree-to-license

✅ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

✅ arch -x86_64 brew install mongodb-community@4.4
  • mongoDB 명령어: help, use , show collections, db.videos.find({})/remove({})
  • webpack config의 loader설정 시, use: [][]안 적용순서는 역순... 웹팩은 이상해..

  • @babel/polifill(충전솜): 브라우저의 구멍을 메워주는 js파일. 브라우저에 없는 기능을 emulate 하는 기능.

  • connect-mongo 모듈? 서버를 재시작할때마다 세션의 정보가 다 지워지는데(세션정보가 메모리에 저장되기 때문) 세션정보 저장소를 메모리가 아닌 DB로 연결시키는 모듈.

  • handler = controller 모든 컨트롤러는 미들웨어가 될 수 있다. 미들웨어는 req에 응답하지 않는다.

  • App.use() global middleware 를 만들 때 사용. 어느 url에도 작동하는 middleware.

  • Routers allow you to organize your controller and your urls in a easier way.
    "Mini-application"
    "URL Portal"

  • PUG의 장점.

    1. html을 간결하게 쓰게 해줌.
    2. #{} 자바스크립트를 포함할 수 있음. 또는 컨트롤러에서 변수를 받아옴. #{}는 html element가 아닌 html attribute에서는 쓸 수 없음.
    3. 반복을 피할 수 있음. extends & block / partial-include / mixin
  • req.body : javascript reprentation of value in the form..

  • express 함수에서 return은 return 함수 이후의 것을 무효화한다. express에서 return은 부가적인 역할만 함.

  • mongoose find 와 findOne의 차이
    find 는 배열을 리턴함. null을 리턴하지 않고 []리턴.
    findOne은 문서 하나를 리턴함. 제일 먼저 찾는 것 하나 리턴.

  • multer : 파일업로드를 도와주는 미들웨어..
    html form(enctype="multipart/form-data") 필수
    미들웨어 선언 및 저장장소설정
    export const fileUpload = multer({ dest: "upload/" });

    라우터에서 컨트롤러 실행 전 사용. fileUpload.single("input name where file comes from")

    -> 컨트롤러에서 req.file로 접근 가능.. multer가 req.file로 정보를 넘겨줌.

API : 백엔드에서 template을 렌더링하지 않는다. API란 백엔드가 템플릿을 렌더링하지 않을 때, 프론트엔드가 백엔드와 통신하는 방법.

SSR(Server-Side-Rendering) : 백엔드에서 template을 렌더링... 요즘엔 잘 안씀.

Interactivity basically means that things happen on the page without URL changing

  • path.join() vs path.resolve()
    As for which one you should use, the answer is: it depends on how you want segments starting in / to behave - should they be simply joined or should they act as the new root?
profile
Growing Developer!!

0개의 댓글