본문으로 건너뛰기

asap.js 빠르게 시작하기

asap.js 모범구성 알아보기​

asap.js를 사용하여 Node.js 기반으로 구조화된 간결한 웹서버를 빠르게 배포해보세요.

asap.js를 사용하기 위해서는 우선 모범구성 탬플릿을 사용하는것을 권장합니다. 본 문서에서는 모범구성 탬플릿에 대한 최소한의 설명과 이를 이용해서 웹서버를 빠르게 배포하는 방법을 설명합니다.

만약 프레임워크의 자세한 부분을 알아보며 처음부터 구성하고 싶다면, asap.js 자세히 알아보기 문서를 참조하세요.

asap.js 프로젝트 구조​

기본적인 asap.js 프로젝트는 아래 구조를 사용합니다.

example-asapjs-project
├── Dockerfile
├── deploy.sh
├── ecosystem.config.js
├── package.json
├── env
│   ├── .env.local
│   ├── .env.dev
│  └── .env.prod
├── src
│   ├── archive
│   │   ├── application
│   │   │   └── ArchiveApplication.ts
│   │   ├── controller
│   │   │   └── ArchiveController.ts
│   │   ├── domain
│   │   │   ├── ArchiveTableInterface.ts
│   │   │   └── entity
│   │   │   └── ArchivesTable.ts
│   │   ├── dto
│   │   │   ├── ArchiveDto.ts
│   │   │   └── GetArchiveDto.ts
│   │   └── infra
│   │   └── ArchiveTableRepository.ts
│   ├── index.ts
│  └── config.ts
├── tsconfig.json
└── yarn.lock

src 하위에는 utils / common 과 같은 공통 폴더를 레이어로 구분하고, 나머지 폴더들은 도메인(최소 기능 집합) 단위로 구분합니다.

모든 설정 구성은 config.ts 를 기본적으로 참조합니다. 모범구성에서의 config.ts는 dotenv를 기본적으로 사용하고, 프로젝트 루트에 존재하는 '.env' 파일을 환경변수로 불러온 뒤 인자를 파싱합니다.

asap.js 모범구성 실행 스크립트​

실행 스크립트는 크게 세가지로 나누어집니다.

명령별로 지정하는 환경에 따라서 프로젝트루트/env/.env.{환경명} 파일을 기본 env 참조 경로인 프로젝트루트/.env로 덮어씁니다.

환경로컬에서 바로 실행하기js 파일로 빌드하기빌드한 js 파일로 실행하기
prodyarn prodyarn build:prodyarn start
devyarn devyarn build:devyarn start
localyarn local-yarn start

asap.js 모범구성 기본 config 구조​

주의

아래 파일들은 asap.js에서 참조하는 모든 필수 필드가 포함된 구조로, 기존 필드를 삭제하는것은 권장하지 않습니다.

asap.js 모범구성의 기본 config.ts 파일 구조는 아래와 같습니다.

config.ts
import { logger } from "@asapjs/core";

import packageJson from "../package.json";

require("dotenv").config({ path: `${__dirname}/../.env` });

const debug = process.env.NODE_ENV === "development";
const port = 3000; // 포트번호

export default {
debug,
name: packageJson.name,
basePath: "",
extensions: ["@asapjs/router", "@asapjs/sequelize"],
port,
auth: {
jwt_access_token_secret:
process.env.JWT_ACCESS_SECRET || "<JWT Access Token Secret>",
jwt_access_token_life:
process.env.JWT_ACCESS_LIFE || "<JWT Access Token Life (ex:6h)>",
jwt_refresh_token_secret:
process.env.JWT_REFRESH_SECRET || "<JWT Refresh Token Secret>",
jwt_refresh_token_life:
process.env.JWT_REFRESH_LIFE || "<JWT Refresh Token Life (ex:365d>",
},
db: {
database: process.env.DB_NAME || "<데이터베이스 이름>",
username: process.env.DB_USERNAME || "<데이터베이스 유저네임>",
password: process.env.DB_PASSWORD || "<데이터베이스 비밀번호>",
host: process.env.DB_HOST || "<기본 데이터베이스 주소>",
port: process.env.DB_PORT || "<포트번호 (ex:3306)>",
dialect: "mysql", // mariadb,sqlite,postgres,mssql 사용가능
logging: (query: string, time: number) => {
logger.debug(`${query}`);
},
timezone: "+09:00", // KST 기본 시간
pool: {
max: 20,
idle: 4800,
acquire: 60000,
},
},
swagger: {
name: packageJson.name,
version: packageJson.version,
scheme: debug ? "http" : "https",
host: debug ? `localhost:${port}` : "a-fin.co.kr",
auth_url: "/auth/login",
},
};

asap.js 모범구성의 기본 .env 파일 구조는 아래와 같습니다.

.env
NODE_ENV=production

DB_NAME=데이터베이스이름
DB_USERNAME=데이터베이스유저명
DB_PASSWORD=데이터베이스패스워드
DB_HOST=데이터베이스호스트
DB_PORT=데이터베이스포트

JWT_ACCESS_SECRET=엑세스토큰시크릿
JWT_ACCESS_LIFE=엑세스토큰유효기간(권장 6h)
JWT_REFRESH_SECRET=리프래시토큰시크릿
JWT_REFRESH_LIST=리프래시토큰유효기간(권장 14d)

asap.js 모범구성으로 웹서버 열기​

git clone https://github.com/asap-things/asapjs-template
cd asapjs-template
npm install
npm run dev

축하합니다! 이제부터 asap.js와 함께 쉽고 빠르게 웹서버 개발을 시작해보세요 🚀