Node.js란 무엇인가
Node.js란 비동기 이벤트 주도 JavaScript 런타임으로써 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다. 다수의 연결을 동시에 처리할 수 있으며 교착 상태에 대해 걱정할 필요가 없다. 또한 직접 수행하는 함수도 거의 없으므로 프로세스에서 결과 블로킹이 되지 않는다.
Node.js에서는 발전된 이벤트 모델을 선택해서 라이브러리가 아닌 런타임 생성자로 이벤트 루프를 제공한다. 입력 스크립트를 실행한 후에 이벤트 루프에 바로 진입하며 진행할 콜백이 없다면 이벤트 루프를 종료한다. 또한 웹 라이브러리나 프레임워크의 기반으로 아주 적합하다.
npm과 yarn이란 무엇인가
npm
자바스크립트 패키지 매니저로, node.js의 기본 패키지 관리자이다.
npm으로 Cloud Storage용 Node.js 클라이언트 라이브러리 설치 예시:
npm install --save @google-cloud/stoarge
yarn
자바스크립트 패키지 매니저로, 다운받은 패키지 데이터를 캐시에 저장하여 중복된 데이터는 다운로드하지 않고 캐시에 저장된 파일을 활용하여 패키지 설치 속도가 매우 빠르다.
yarn으로 Cloud Storage용 Node.js 클라이언트 라이브러리 설치 예시:
yarn add @google-cloud/storage
차이점
- yarn이 가파르게 성장하며 서서히 쫓아가고 있는 추세이지만 아직까지는 npm의 커뮤니티 규모가 더 크고 다운로드 수가 더 많다.
- yarn의 속도가 훨씬 빠르다는 장점이 존재해서 속도 측면에서는 yarn이 우세하다.
정적 타입 언어 vs 동적 타입 언어
정적 타입
정적 타입 언어란 컴파일 시 변수의 타입이 결정되는 언어이다. 사용자가 직접 자료형을 지정해주어야 하기 때문에 자료형에 맞지 않는 값이 있을 시 컴파일 에러가 발생하며 대표적인 정적 타입 언어로는 Java, C, C++ 등이 있다
동적 타입
동적 타입 언어란 자료형이 컴파일이 아닌 런타임 시 결정된다. 사용자가 직접 자료형을 지정하지 않아도 런타임에서 타입을 결정해주기 때문에 보다 편리하다는 장점이 있다. 대표적인 동적 타입 언어로는 Python, JavaScript, Ruby 등이 있다.
라이브러리와 프레임워크의 차이
라이브러리
라이브러리는 특정 기능에 대한 도구 또는 함수들의 집합이다.
프로그래머가 어떠한 기능을 수행하기 위해 도움을 주거나 필요한 것을 제공하는 역할을 한다.
프레임워크
프레임워크는 기반 구조를 뜻한다.
프로그래밍을 진행할 때 필요한 코드, 알고리즘과 같은 어느 정도의 구조를 제공해주며
프레임워크에서 코드를 작성하여 개발을 하면 된다.
소프트웨어적으로 정의하면 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합이다.
프레임워크와 라이브러리의 차이
프로그래머는 프레임워크 안에서 코드를 짜며 라이브러리를 이용해 필요한 기능들을 구현합니다.
프레임워크를 집으로, 라이브러리를 가구로 비유하여 예시를 들어보면,
우리는 씻거나 잠을 자거나 음식을 먹을 때 주거 공간에서 해결해야 하는데
이렇게 다양한 일들을 하게 해주는 토대를 마련하는 것이 프레임워크의 역할이라고 이해하면 됩니다.
주거 공간이 해결되면 이제 씻거나 자거나 먹을 때 필요한 세면대, 침대, 후라이팬 등이 필요한데
이러한 도구를 라이브러리로 생각하면 쉽게 이해가 됩니다.
REST API란 무엇인가
Rest
"Representational State Transfer"의 약자로, 자원의 이름으로 구분하여 문서, 그림, 데이터와 같은 자원의 상태를 주고 받는 모든 것을 의미한다.
API
API란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것을 의미한다.
REST API
REST 기반으로 서비스 API를 구현한 것
REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
Node.js의 FE Library / Framework에 대해서 알아보고 비교해보기
Library
nodemon
노드가 실행하는 파일이 속한 디렉터리를 감시하고 있다가 파일이 수정되면 자동으로 노드 애플리케이션을 재시작하는 확장 모듈이다. 애플리케이션의 소스 코드를 수정할 때마다 매번 노드 명령어를 통해 새로 시작할 필요가 없으므로 매우 편리하다
chalk
색상 지원 자동 검색
256가지의 Truecolor 지원
스타일 중첩 기능 제공
Rollup
모든 곳에 ESM 구문 사용 가능하게 해줌
코드를 바로 작동하는 구문으로 번들링
Vite
빠른 dev 서버 시작
빠른 모듈 교체 제공
Snowpack
빠른 서버 시작
지능형 캐싱을 포함한 ESM 지원
빠른 모듈 교체 제공
loadash
배열, 숫자, 객체, 문자열 등을 쉽게 다루리 위한 메소드 제공
Framework
Express.JS
Express.js는 웹 및 모바일 애플리케이션 개발을 위한 Node.js 프레임 워크이다. 기본 웹 애플리케이션 기능을 제공하는 라우팅 라이브러리 세트로, 고성능에 중점을 두고 강력한 라우팅과 HTTP 도우미를 지원한다. 또한, 많은 HTTP 유틸리티 메소드, 함수 및 미들웨어가 제공된다.
Socket.io
Socket.io는 실시간 애플리케이션 구축을 위한 빠르고 안정적인 풀 스택 프레임 워크이다. 자동 연결, 단절 감지, 바이너리, 멀티플렉싱 및 룸을 지원하며 간단하고 편리한 API를 가지고 있으며, 모든 플랫폼, 브라우저 또는 장치에서 작동한다.
Meteor.JS
Meteor.js는 최신 웹 및 모바일 애플리케이션을 구축하는 초소형 풀 스택 Node.js 프레임 워크이다. 연결된 클라이언트 반응형 애플리케이션, 빌드 툴 및 Node.js 및 일반 JacaScript 커뮤티니의 선별된 패키지 세트를 빌드하기 위한 주요 기술 컬렉션을 통합한다.
Koa.JS
Koa.js는 웹 응용 프로그램 및 API 개발을 위해, 더 작고 표현력이 뛰어나고 강력한 프레임워크를 목표로 , 콜백 지옥의 앱을 제거하고 오류 처리를 단순화하기 위해 약속 및 비동기 기능을 사용한다.
Salis.JS
Sails.js는 실시간 MVC 웹 개발 프레임워크이다. MVC 아키텍처는 Ruby on Ralis와 같은 프레임워크와 유사하지만 보다 최신의 데이터 중심 스타일의 웹 앱 및 API 개발을 지원한다는 점에서 다르다.
관련글
'개념 스터디' 카테고리의 다른 글
관점 지향 프로그래밍(Aspect Oriented Programming, AOP) (1) | 2024.01.14 |
---|---|
제어 역전(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI) (0) | 2024.01.14 |
[개념스터디] 4주차 (0) | 2021.08.25 |
[개념 스터디] 3주차 (0) | 2021.08.17 |
[개념 스터디] 2주차 (0) | 2021.08.08 |