카테고리 없음

Javascript 톺아보기

몇살이되어도치과는싫어 2024. 7. 9. 10:56

1. Javascript 이란?

JavaScript는 표준 웹 기술
HTML 은 쓰기,CSS 는 꾸미기,JS는 움직임을 담당.

Javascript의 장점 
 HTML/CSS와 완전히 통합할 수 있음
 간단한 일은 간단하게 처리할 수 있게 해줌
 모든 주요 브라우저에서 지원하고, 기본 언어로 사용됨
 쉬운 디버깅 > 인터프리터 언어라서 한줄에서 문제가 생기면 다음으로 넘어가지 않고 멈춤
 유연한 코드 작성 > 타입의 제약없이 유연한 코드 작성 가능 브라우저에서 바로 실행이 가능하기 때문에 
 IDE의 영향도 상대적으로 덜하며 운영체제에 제한을 받지 않음
 인기 > 개발자들 사이에서 인기가 있는 언어는 그만큼 의견공유도 많고 레퍼런스도 많음 
 다양한 개발 생태계 > 패키지 매니저(npm,yarn), 빌드 도구(webpack,Esbuild,Vite),프레임워크(React,Vue,Svelte)

JavaScript단점
 코드 복잡성과 생태계의 빠른 변화 
 콜백 지옥 > 비동기 특성으로 인해서 여러작업을 순차적으로 처리해야할때

 중첩된 콜백은 빠르게 복잡해지고 어려워질수 있음
 타입의 예측이 어려움 > 이를 보완하기 위해 TypeScript같은 엄격한 문법을 유지하는 언어도 등장.

 

 

2.Javascript 프레임워크 알아보기

- **Express.js**

Express.js의 특징

 

Node.js 기반의 경량화 웹 개발 프레임 워크.
사실상 Nodejs의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용
Express는 웹과 모바일 앱 개발을 위해 견고한 최소한의 기능들을 제공하는 
유연한 NodeJS의 웹 어플리케이션 프레임워크라고 한다.

라우팅, 세션, HTTP 요청, 에러 핸들링과 같은 다양한 백엔드 기능들을 제공한다.
모바일 앱을 포함한 싱글 페이지, 멀티 페이지와 하이브리드 웹 어플리케이션과 같은 
API와 웹 어플리케이션들을 쉽게 만들 수 있다.
HTTP 요청에 대한 다양한 미들웨어들을 제공한다.
HTTP 메서드와 URL을 사용하여 ExpressJS만의 고유한 라우팅 기법을 제공한다.
MongoDB, Redis, MySQL 등과 같은 데이터베이스에 쉽게 연결이 가능하다


장점

 

Express는 프레임워크로서, 
웹 어플리케이션을 만들기 위한 각종 라이브러리와 JavaScript 코드로 작성된 다양한 기능의 미들웨어등이 내장되어 있어
개발을 수월하게 만들고, 많은 개발자들에게 개발규칙을 강제하여 코드 및 구조의 통일성을 향상 시킬 수 있다.

Node.js는 Chrome V8엔진을 이용하여 JavaScript로 브라우저가 아니라 서버를 구축하고, 
서버에서 JavaScript가 작동되도록 하는 런타임 환경(플랫폼)이며,
Express는 이런 Node.js를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체 이기 때문에
JavaScript를 알면 진입장벽이 낮은편이다.

그 외, 쉬운 설정,다른 엔진들과의 연동이 쉬움,프론트와 백엔드 간의 소통이 용이한 점이 있으며
오래 되었기에 강력한 커뮤니티 형성이 되어있는 것 또한 장점이다.


단점

 

에러 메시지 분별력이 떨어진다.
Node.js는 싱글 스레드 기반의 비동기 처리 방식을 사용한다. 
이 방식은 이벤트 루프와 콜백 함수를 활용하여 비동기 작업을 처리하는데  
이벤트 루프는 노드가 이벤트를 감지하고 처리하는 메커니즘으로, 이벤트가 발생하면 콜백 함수가 실행된다. 
이러한 방식으로 노드는 다수의 클라이언트 요청을 동시에 처리할 수 있음.
하지만 이러한 비동기 처리 방식은 콜백 함수의 중첩이 발생하면서 콜백 지옥이라는 문제가 발생하기도 함. 
콜백 지옥은 코드의 가독성을 떨어뜨리고 유지보수를 어렵게 만드는 문제가 있.
코드 구성이 간혹 어려울 수 있으며, 규모가 큰 프로젝트에 적합하지 않다


- **Nest.js**
Nest.js의 특징

 

Java Spring의 구조를 차용한 Node.js 환경의 새로운 프레임워크.

OOP (객체 지향 프로그래밍), FP (함수형 프로그래밍), 그리고 FRP(반응형 함수 프로그래밍?)를 모두 결합한다.
다양한 데이터베이스를 지원한다.
ExpressJS를 기본으로 사용하면서 Fastify와 같은 HTTP 프레임워크를 설정해서 사용할 수 있을 정도로 

운영체제나 프로세서의 개방성의 높은 플랫폼.
더 적은 코드양으로도 어플리케이션을 만들 수 있도록 수 많은 라이브러리, API 그리고 기능들을 제공한다.
코드의 가독성 및 유지보수를 위해 Dependency Injection(DI)이 내장되어 있다.
=> DI는 객체들의 의존관계를 정립하고 주입하는 것

 


장점

 

MVC 디자인 패턴(Controller, Service, Entity, Repository 등)을 기본 패턴으로 보다 체계적이고 모듈화된 구조
버그의 사전방지 및, 코드의 재사용및 유지보수성 
강력한 CLI (Command Line Interface)
오픈 소스

 


단점

 

JS기반이지만 TypeScript 지식이 필수
유저 베이스의 결핍
ExpressJS보다 작은 커뮤니티