본문 바로가기

더이상 하지 않는 Backend - NodeJS/Node-Express 개론(완)33

[O'REILLY] Node & Express - 3장 : 뷰엔진 설정하기 1. 뷰엔진 설정 - 저번 시간에 npm i express-handlebars 설치를 통해 모듈을 설치했으면 다음과 같이 코드를 추가해준다. meadlolark.js - 이 코드는 뷰 엔진을 생성하고 익스프레스에서 이 엔진을 기본값으로 사용한다. - views 디렉토리를 만들고 그 안에 layouts 서브디렉토리를 만든다. - 레이아웃을 사용하면 사이트에 존재하는 모든 페이지에 프레임워크를 제공해 유지보수 지옥을 피할 수 있다. - 이제 템플릿을 만든다. /views/layouts/main.handlebars - {{{body}}} 부분의 표현식은 각 뷰에서 HTML로 바뀐다. - 핸들바 인스턴스를 만들었을 때 defaultLayout: 'main' 으로 기본 레이아웃을 선언했으므로, 따로 명시하지 않는.. 2023. 3. 8.
[O'REILLY] Node & Express - 3장 : Express 1. 스캐폴딩 - 스캐폴딩(비계, 발판) 이란 루비에서 도입한 개념이다. 프로젝트의 뼈대를 미리 만들어두고, 새 프로젝트를 시작할 때마다 뼈대(템플릿)를 복사하면 된다는 아이디어이다. - 익스프레스는 스캐폴드를 생성하는 유틸리티를 제공한다. - 단, 익스프레스의 스캐폴딩 유틸리티는 서버사이드에서 HTML을 생성하는 방향에 치중해있고, API나 단일페이지 App에는 큰 도움이 되지 않는다. - express-generator 문서에서 확인할 수 있다. 2. 메도라크 여행사 웹사이트 - 이 책에서는 가상의 회사 메도라크 여행사의 웹사이트를 예제로 사용한다. 3. 초기 단계 - 설치 : 터미널에 npm init -y 입력. - package.json 의 entry point(main) : 'meadowlark.. 2023. 3. 7.
[O'REILLY] Node & Express - 2장 : NodeJS 시작하기 1. 기본지식 - 노드 : nodejs 패키지를 설치할 수 있다. - 터미널 : 터미널을 켜고 끌 수 있으며, cd, npm 등을 활용 할 수 있다. - IDE : 객기 말고 돈 없으면 VScode 쓰자. - npm : 노드 패키지를 위한 패키지 매니저. npm install, -g, -D 등의 옵션과 기본 명령어를 알고 있다. 2. 노드로 만드는 단순한 웹서버 - 웹 서버는 파일이 컴퓨터 어디에 있는지 확인하고 브라우저(클라이언트)에 그 파일을 전송한다. - 노드는 전통적인 웹 서버와는 다른 패러다임을 제시한다. 노드에서는 앱이 곧 웹서버이다. - 이벤트 주도 프로그래밍 : 노드의 배경이 되는 철학이다. 어떤 이벤트가 일어날지, 그 이벤트에 어떻게 반응해야 할지 프로그래머가 이해해야 한다. UI의 클릭.. 2023. 3. 6.
[O'REILLY] Node & Express - 1장 : EXPRESS에 대하여 2021.05.01. 발행된 오라일리 노드&익스프레스 교과서를 핵심정리하고 복습하기 위한 포스팅이다. 1. 익스프레스 소개와 특징 - 익스프레스는 '웹과 모바일 앱에 빈틈없는 기능을 제공하는, 최소화되고 유연한 노드 웹 어플리케이션 프레임워크' 이다. - 자바스크립트(언어)를 기반으로하는 V8엔진(런타임)을 기반으로하는 NodeJS(서버용런타임)를 기반으로하는 프레임워크가 Express이다. - 특징 1) 최소화 : 유용한 기능을 제공하되, 최소한의 프레임워크를 제공하고, 익스프레스의 기능 중 필요한 것만 추가하고 필요하지 않다면 제거할 수 있도록 도와준다. 2) 유연성 : HTTP요청을 받고, HTTP응답을 반환하는 서버의 궁극적이고 근본적인 역할에 충실한다. 3) 웹 앱 프레임워크 : 익스프레스는 웹.. 2023. 3. 6.
Express - 5장 : Authentication - 1 (Session-based Auth) 1. Authentication 개요 1. session-based authentication - 로그인 시 cookie를 발행(session id가 적혀있다.) - 요청 시 user의 session id를 보내고 받는다. - 로그인 상태를 서버에 다 저장한다. 2. token-based (JsonWebToken) - JWT (REST원칙에 맞다) - 로그인 시 JSON Web Token을 발행. - 쿠키나 로컬스토리지에 저장. - 요청 시 user의 JWT를 헤더에 포함해서 보내고 받는다. - JWT토큰 유효성 검사 후 보내준다. - 유저의 로그인 상태를 저장할 필요가 없다. 3. Open Authentication(OAuth) - 다른 사이트의 프로필 정보를 가져온다. (구글, 페이스북, 카카오, 애.. 2023. 3. 3.
Express - 4장 : Mongoose 의 CRUD 1. CRUD란 ? - create - read - update - delete 2. Cheat Sheet Schema 세팅 var mongoose = require("mongoose"); var Schema = mongoose.Schema; var ProductSchema = new Schema({ name: { type: String, required: true }, brand: { type: String, required: false }, order: { type: Schema.Types.ObjectId, ref: "Order" } }); // This creates our model from the above schema, using mongoose's model method var Product.. 2023. 3. 3.
Express - 3장 : Mongoose 더 살펴보기 1. Mongoose 구조 복습 // 1. model.js 에서 new mongoose.Schema() method로 Schema 정의 // 2. model.js 에서 module.exports = mongoose.model('Collection이름', 정의Schema)로 연결 // 3. controller.js에서 async함수 생성 -> await 생성 -> CRUD methods // 4. 맨날쓰는 pattern router.post('url', async (req, res)=>{ const user = new User(req.body) // 받아온 데이터 객체 생성 try{ await findSomething(); await CRUDSomething(); res.send('sendSomething.. 2023. 2. 27.
Express - 2장 : MongoDB / Mongoose 세팅하기 1. mongoDB 사이트에서 가입하고 Collection 만들기 - 가입 - 서버위치 : 한국 - DB Access 에서 ID/PS 설정 - atlas admin 으로 설정 - Network Access에서 IP 추가 - DB Collection 설정 - 프로젝트 폴더로 돌아와서 npm i mongoose 2. Model/Schema 생성(backend/models) User.js const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ //스키마 생성자 userID: { type: String, // 타입 설정 required: true // 필수 설정(true:있어야함, fa.. 2023. 2. 27.