자바스크립트란?
동적 웹 프로그래밍 언어
자바스크립트 엔진이 있는 환경에서 동작한다.
코드 기능에 따라 지원하는 엔진이 다를 수 있다.
- V8 - Chrome, Opera에서 쓰이는 엔진
- SpiderMonkey - Firefox에서 쓰이는 엔진
- 그 외 Trident, Chakra, SquirrelFish 등.
브라우저 환경에서 웹페이지 조작, 클라이언트와 서버의 상호작용에 관한 모든 일을 할 수 있다.
하지만 사용자의 보안을 위해 운영체제가 지원하는 기능을 직접 쓰지 못하게 막혀있다.
- 파일 읽기, 쓰기, 복사, 실행
- I/O 디바이스 제어(카메라, 마이크)
또한 서로 다른 탭 또는 창 간에 접근 불가
Javascript의 강점
- HTML/CSS와 완전히 통합할 수 있음
- 간단한 일은 간단하게 처리할 수 있게 해줌
- 모든 주요 브라우저에서 지원하고, 기본 언어로 사용됨
- CoffeScript, TypeScript, Flow, Dart 등으로 작성된 코드도 트랜스파일 후 브라우저에서 실행이 가능.
**Express.js**
- Express.js의 특징은 무엇인가요?
가볍고 자유도가 높은 Node.js 웹 프레임워크. 기본적인 웹 서버 및 API 구축에 유용함.
비동기 처리 방식을 지원하여 고성능 서버 구축에 적합
- 장점을 기술해주세요.
설정이 간단하고 필요한 기능만 추가할 수 있어 빠르고 쉽게 시작할 수 있다.
다양한 모듈과 미들웨어를 제공한다.
자유도가 높아 원하는 애플리케이션 구조를 만들기 쉽다.
- 단점을 기술해주세요.
자유도가 높아 규모가 커지면 구조 관리가 어려워질 수 있다.
일부 기능을 구현하기 위해 많은 설정과 모듈 통합을 요구할 수 있다.
Nest.js
- Nest.js의 특징은 무엇인가요?
모듈화된 구조, 모듈을 통해 코딩 가능.
TypeScript 기반, 정적 타입 검사를 통해 안정적인 코드 작성 가능.
의존성 주입을 지원하여 코드의 재사용성을 높여준다.
(의존성 : 타 클래스의 객체 생성 없이 정상적인 실행이 불가능한 성질)
(의존성 주입 : 타 클래스의 객체를 생성하도록 하지 않고 외부에서 객체를 주입하게 하는 것)
Express.js 위에서 작동한다. Fastify와도 호환이 가능하다.
- 장점을 기술해주세요.
모듈 기반 설계로 대규모 애플리케이션 구성 시, 코드의 가독성과 유지보수성을 높여준다.
TypeScript의 정적 타입 시스템을 활용해 런타임 오류를 줄이고, 대규모 프로젝트에서 타입 안정성을 제공한다.
일관된 코드 스타일을 유지할 수 있도록 규칙을 제공하여, 협업과 유지보수에 유리하다.
- 단점을 기술해주세요.
코드 구조와 패턴이 복잡하다.
설정도 Express.js에 비해 복잡하며, 초기 설정이 시간이 걸린다.