시작하기전에....
백엔드 공부를 하면서, 백엔드 개발자로써 구현할 수 있는 기능과 다뤄야하는 패키지가 무엇이 있는가에 대해
정리를 해보고자 한다.
여기는 어디까지나 이러이러한 기능이 있고 이것들을 익혀야 한다.
라는 뉘양스로 작성한 포스트에 가깝다.
때문에 이곳에서는 아주 짧고 간단하게 패키지를 소개하고자 한다.
참고로 아래서 소개할 패키지중엔 같은 기능을 하는 다른 패키지도 있을 수 있는 점도 유의하자
0. 서버, DB 등을 위한 패키지
Node.js를 할 때 거의 필수적으로 설치하게 되는 패키지에 대한 내용
데이터 베이스에 관한 부분도 포함한다.
express
웹서버를 만들 때 거의 필수적으로 사용하게 되는 패키지
API서버를 구축하는데 주로 사용
사실상 필수 패키지다.
helmet
express사용할 때 헤더의 설정을 통해 웹 취약점으로부터 서버를 보호해주는 보안 모듈이다.
const helmet = require('helmet');
const express = require('express');
const app = express();
app.use(helmet());
서버실행에 이렇게 추가해주면 된다.
cors
CORS를 사용하기 위한 것으로
다른 사이트에서 나의 서버에 요청하는 것을 허가할 때 사용한다.
꽤나 어려운 개념이므로 따로 공부가 필요하다.
mongoose
몽고DB를 사용한다면 설치해야 하는 패키지
다른 DB를 사용한다면 필요 없다.
mysql2
mysql DB를 사용한다면 설치해야 하는 패키지
mysql을 사용하려면 아래 두 개도 설치해야 한다.
npm i sequelize mysql2 -S
npm i sequelize-cli -D
1. 로그인 기능
주로 로그인이나 회원가입에 관한 부분
비밀번호의 암호화, 회원가입시 아이디나 비번에 대소문자 포함 등의 내용을 다룬다.
jsonwebtoken
로그인시 토큰을 발행할 용도로 사용한다.
로그인에 성공하면 토큰을 발행하고 로그인한 사용자가 요청을 할 때마다
이 토큰을 검증하여 요청을 허가 또는 차단한다.
bcrypt
암호화 모듈로 패스워드를 암호화하여 저장하기 위해 사용한다.
암호화 모듈엔 여러가지가 있지만 현재는 이게 가장 강력하고 또 유명하다.
joi
아이디나 비밀번호를 입력할 때 제한을 두기 위해 사용한다.
아이디나 비밀번호를 입력할때 최소 몇자리, 최대 몇자리, 영문자 대소문자 포함 등의
조건이 주렁주렁 달리는데 이것을 구현할 때 사용한다.
const { signupSchema, loginSchema, emailDupSchema, nicknameDupSchema } = require('../util/validation');
class UserController {
signup = async (req, res, next) => {
try {
const { locationId, nickname, password, confirm, email } =
await signupSchema.validateAsync(req.body);
} catch (error) {
next(error);
}
}}
이하 생략
const joi = require('joi');
module.exports = {
signupSchema: joi.object({
locationId: joi.number().required(),
email: joi
.string()
.pattern(
/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/
)
.required(),
nickname: joi.string().min(2).max(10).required(),
password: joi
.string()
.pattern(/^(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*]{8,16}$/)
.required(),
confirm: joi
.string()
.pattern(/^(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*]{8,16}$/)
.required(),
}),
};
이하 생략
위 코드는 실제로 작동하는 코드는 아니고 일종의 참조용으로 적어놓은 것이다.
위는 로그인 컨트롤러 파일이고
아래는 joi관련 파일이다.
회원가입을 할때 바디로부터 필요한 내용을 받아서 validation스키마로 보내면
그 스키마에서 검증을 거쳐준다고 생각하면 된다.
cookie-parser
쿠키를 사용하기 위해 설치한다.
쿠키는 사용자의 컴퓨터에 저장되는 정보를 뜻하며 주로 로그인정보나 장바구니 정보등을 저장할 때 쓴다.
이것 또한 매우 중요하니 따로 공부를 해볼 것을 권장한다.
2. 포스트 기능
포스팅을 작성할 때 필요한 패키지를 위주로 다룬다
multer
파일 업로드를 위해서 사용한다.
multer-s3
사진을 업로드하기 위해서 사용하는 듯하다.
이 때, aws-sdk 패키지랑 같이 사용하는 듯 하다.
sharp
이미지 크기를 변경하기 위해서 사용한다.
프로필 이미지, 썸네일 등을 사용하기 위해서 사용한다.
aws-sdk
AWS서비스와 연동해서 사용하기 위해서 설치한다.
즉 배포용이라고 생각하면 편하다.
3. 실시간 데이터 교환 기능
socket.io
알람, 채팅 등과 같은 실시간 서비스를 구현해야 할 때 사용한다.
따로 공부가 필요할 정도로 어려운 부분임을 참고
※ 그 외 개발 편의용 패키지
prettier
그냥 문서양식을 통일해주는 패키지
내부 코드를 조작하면 어떻게 통일해줄지도 조정할 수 있다.
nodemon
자동으로 서버를 실행시켜주는 패키지
없어도 되지만 편하다보니 다들 사용하는 모양이다.
morgan
서버 로그 관리를 위해 사용한다.
예를 들어 서버와 클라이언트간의 통신이 발생하면 그 로그가 터미널에 발생하는 것을 알 수 있다.
좋은 개발자가 되기 위해서, 위의 패키지의 사용법은 익히도록 하자
'Framework > Node.js' 카테고리의 다른 글
Node.js 공부정리 - 쿠키 - 복습 - 001 (0) | 2022.10.26 |
---|---|
Node.js 공부정리 - Socket.io (0) | 2022.10.14 |
Node.js 공부정리 - Layered Architecture Pattern - 001 (0) | 2022.10.14 |
Node.js 공부정리 - 미들웨어 (0) | 2022.10.09 |
Node.js 공부정리 - JWT (1) | 2022.10.08 |