** 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() 를 호출해야한다. 다음 함수들로 넘어가야하기 때문이다.
** 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
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의 장점.
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