본문 바로가기
728x90

javascript40

TDD | 테스트 주도 개발? ※ 인프런 - 테스트주도개발(TDD)로 만드는 NodeJS API 서버 강의를 기반으로 정리한 내용입니다. TDD(Test Driven Development) 테스트 주도 개발(TDD)은 바로 소스코드를 작성하지 않고, 테스트 코드를 먼저 작성하는 방식을 말한다. 그러고 나서 테스트를 하나씩 통과해가면서 코드를 만들어간다. 강사님 같은 경우 API 서버를 만들 때 TDD 방식을 많이 사용한다고 한다. TDD를 사용하게 되면 개발하는데 시간이 많이 소요되지만, 프로젝트를 유지보수 하는 시점에 가면 TDD로 개발했던 것이 큰 효과를 발휘한다고 한다. 개발을 할 때, 개발을 하는 시간보다는 유지보수하는데 더 많은 시간이 들었고, 이때 TDD방식으로 개발했을 때 많은 도움이 되었다고 한다. (실제로 많은 기업에.. 2022. 5. 9.
ts-node | NodeBird | 다양한 케이스를 위한 오버로딩 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 오버로딩? 같은 매개변수를 여러 방법으로 설정하는 것 이전 글에서 local.ts 파일에 해당하는 타입 정의를 위해 직접 타이핑을 했었다. 그런데 만약 local 내의 코드를 수정해야 하는 경우라면 어떻게 해야 할까? import * as passport from 'passport'; import * as bcrypt from 'bcrypt'; import { Strategy } from 'passport-local'; import User from '../models/user'; export default () => { passport.use('local', new S.. 2022. 5. 6.
ts-node | NodeBird | 타입 없는 라이브러리 타이핑하기 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 본 강의에서는 프론트엔드는 다루지 않기 때문에 대체할만 것들을 직접 작성해본다고 한다. 타입스크립트를 작성할 때 크게 두 가지 방법이 있다. 첫 번째는 리덕스처럼 처음부터 타입스크립트로 코드를 작성하는 방법이고, 나머지 하나는 JS로 먼저 코드 작성 후 타입스크립트를 붙이는 방식이다. 우리는 두 번째 방식으로 타입스크립트를 작성할 것이고, @types/passport-local 라이브러리를 직접 코딩하면서 테스트해볼 것이다. 그래서 기존에 설치했던 이 모듈은 삭제. npm rm @types/passport-local 타이핑은 /back/types에서 할 것이다. tsco.. 2022. 5. 3.
ts-node | NodeBird | 라우터 만들기(3) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. routes/post.ts 저번에 이어서 계속 post라우터 만들어가자. image를 업로드 하는 라우터는 다음과 같다. router.post('/images', upload.array('image'), (req, res) => { console.log(req.files); if (Array.isArray(req.files)) { res.json((req.files as Express.MulterS3.File[]).map((v) => v.location)); /** * location이라는 메소드는 MulterS3 네임스페이스에만 존재하기 때문에 Multer를 Multe.. 2022. 5. 3.
ts-node | NodeBird | 라우터 만들기(2) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. routes/user.ts 저번에 user라우터를 만들고 있었고, 이어서 진행해보자. user라우터는 다음과 같이 완성됐다. import * as express from 'express'; import * as bcrypt from 'bcrypt'; import * as passport from 'passport'; import { isLoggedIn, isNotLoggedIn } from './middleware'; import User from '../models/user'; import Post from '../models/post'; import Image fro.. 2022. 5. 2.
ts-node | NodeBird | 라우터 만들기(1) ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 타입스크립트를 포함한 익스프레스의 라우터를 구현해보자. routes/middleware.ts 우선 미들웨어 파일을 만들 것이다. 이 파일에는 현재 사용자의 인증 여부를 파악하는 함수들을 만든다. import {Request, Response, NextFunction} from 'express'; const isLoggedIn = (req: Request, res: Response, next: NextFunction) => { if (req.isAuthenticated()) next(); else res.status(401).send('로그인이 필요합니다!'); }; co.. 2022. 4. 22.
ts-node | NodeBird | passport 설정 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. Passport 이제 로그인 인증 기능을 구현하기 위한 passport 미들웨어를 작성할 것이다. 먼저 back 폴더 내에 passport 폴더를 생성하고, 폴더 내에 index.ts를 만든다. 코드는 다음과 같이 작성한다. // passport/index.ts import * as passport from 'passport'; import User from '../models/user'; // 클래스는 그 자체로 타입으로 정의할 수도 있음 import local from './local'; export default () => { passport.serializeUse.. 2022. 4. 22.
ts-node | NodeBird | 시퀄라이즈 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 미들웨어 세팅이 끝났으면 이제 시퀄라이즈 설치! npm i sequelize npm i sequelize-cli B -> A -> B -> ... 이렇게 서로를 계속 참조하게 되어 꼬리에 꼬리를 무는 무한 루프가 발생하게 될 것이다. 자바스크립트는 해당 문제를 방지하기 위해 순환 참조되는 상황이 오면 두 모듈 중 하나는 빈 객체({ })로 반환이 되고, 이는 무한루프는 막게 되지만 결국 모듈은 정상적으로 사용할 수 없는 상황이 생기는 것이다. 우리 프로젝트로 다시 이 상황을 보자면, models 폴더 내에 있는 파일들을 읽고 이를 모델로 정의하는 파일인 index.ts가.. 2022. 4. 20.
ts-node | NodeBird | express 미들웨어 ※ 인프런 - Node.js에 TypeScript 적용하기(feat. NodeBire) by 조현영 강의를 기반으로 정리한 내용입니다. 모듈 설치 프로젝트에 필요한 모듈들을 한꺼번에 설치해보자. npm i morgan cors cookie-parser express-session dotenv passport hpp helmet 문제는 대부분 모듈들이 타입을 지원하지 않기 때문에 타이핑을 따로 설치해야 함 npm i @types/morgan @types/cors @types/cookie-parser @types/express-session @types/dotenv @types/passport @types/hpp @types/helmet 아래 모듈들도 필요할 것 같아서? 추가로 설치 npm i passpor.. 2022. 4. 19.
728x90
LIST