본문 바로가기
Framework/NestJS

NestJS - Socket 통신을 이용한 간단한 채팅페이지 구현하기 # 2

by 아보_ 2023. 4. 17.
반응형

NestJS와 EJS를 사용한 뷰 구성

이번 페이지에서는 EJS를 사용하여 NestJS 애플리케이션에서 뷰를 구성하는 방법을 알아봅니다.

 

필요한 패키지 설치

먼저 EJS 관련된 패키지를 설치해야 합니다. 터미널에서 다음 명령을 실행하세요.

npm install --save ejs @nestjs/serve-static

뷰 엔진 설정

src/app.module.ts 파일을 열고 다음과 같이 수정하여 EJS 뷰 엔진을 설정합니다.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';

@Module({
  imports: [
    ServeStaticModule.forRoot({
      rootPath: join(__dirname, '..', 'public'),
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

뷰 및 정적 파일 설정

애플리케이션의 뷰 및 정적 파일을 위한 폴더를 생성해야 합니다. 프로젝트 루트 디렉토리에서 다음 폴더를 생성하세요.

mkdir views public

이제 src/main.ts 파일을 열고 다음과 같이 수정하여 뷰와 정적 파일에 대한 설정을 추가합니다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { join } from 'path';
import { NestExpressApplication } from '@nestjs/platform-express';

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  // 뷰 엔진 설정
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  app.setViewEngine('ejs');

  await app.listen(3000);
}
bootstrap();

기본 뷰 구성

views 폴더에 index.ejs 파일을 생성하고 다음 내용을 추가합니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Chat App</title>
</head>
<body>
  <h1>Welcome to the Chat App</h1>
</body>
</html>

기본 라우트 수정

src/app.controller.ts 파일을 열고 다음과 같이 수정하여 기본 라우트가 index.ejs 파일을 렌더링하도록 변경합니다.

import { Controller, Get, Render } from '@nestjs/common';

@Controller()
export class AppController {
  @Get()
  @Render('index')
  index() {}
}

 

애플리케이션 실행

터미널에서 다음 명령을 실행하여 애플리케이션을 시작합니다.

npm run start

 

브라우저에서 http://localhost:3000에 접속하여 작성한 EJS 뷰가 잘 렌더링되는지 확인합니다.

이렇게 나오면 잘되고 계신겁니다!!

 

이로써 NestJS EJS 사용하여 기본 뷰를 구성하는 방법을 알아보았습니다. 다음 페이지에서는 Socket.io 사용하여 채팅 서버를 구현하는 방법을 살펴보겠습니다.

반응형