개발공부를 하다보니 프론트 엔드가 나에게 더 맞다는 판단이 들었고, 나는 앞으로 프론트 엔드 외길 인생을 살 것 같았는데...
막상 내가 정말 만들고 싶은 것들을 구현하려면 백엔드도 어느정도 소화할 수 있어야 한다는 것을 뼈저리게 느꼈다. 특히 팀이 아닌 혼자서 무언가를 해야하는 상황에서는 필수적이었다.
그래서 마음 먹은 김에 백엔드 프레임워크를 공부하기로 했다! 하지만 다른 언어를 배우는 것까지는 아직은 무리라고 판단, 자바스크립트 생태계에서 가장 핫한(?) NestJS부터 배워보고자 한다.
여담이지만 무엇보다 일단 고양이 로고가 정말 마음에 든다. 그런데 여기저기 찾아봐도 왜 Nest가 고양이 로고를 선택했는지는 안 나와 있는 것 같다.(누가 좀 아시면 알려주세요!ㅠ)
npm i -g @nestjs/cli
nest new project-name
//설치
npm i class-validator
//유효성 검사를 위한 데코레이터 import
import { IsBoolean, IsString, Length } from 'class-validator';
//argument생성
@ArgsType()
export class createDto {
@Field((type) => String)
//class-validator설치해야함
@IsString()
@Length(5, 8)
name: string;
...
}
//설치
npm i class-transformer
//main.ts
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
//class-transformer설치해야함
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
npm i @nestjs/config
npm i cross-env
//in nest.js app.module.ts
imports: [
//cross-env configuration
ConfigModule.forRoot({
//전역접근가능
isGlobal: true,
//env파일 참조할 경로
envFilePath: process.env.NODE_ENV === 'dev' ? '.env.dev' : '.env.test',
ignoreEnvFile: process.env.NODE_ENV === 'prod',
}),
...
]
//package.json
"scripts": {
...
"start": "cross-env NODE_ENV=prod nest start",
"start:dev": "cross-env NODE+ENV=DEV nest start --watch",
"start:debug": "nest start --debug --watch",
...
}
쏟아지는 정보들이 너무 많아서, 천천히 곱씹으면서 공부해야할 것 같다.