본문 바로가기
WEB/기초

[WEB] Node.js , NPM

by IT황구 2021. 7. 6.
728x90
반응형

 

오랜만입니다.

앞으로 당분간은 아래 코세라 강의를 기반으로 하여 작성이 될 것입니다.

 

Coursera

Front-End Web Development with React

홍콩과학기술대학

 

설명이 깔끔하신 교수님 입니다

 

 

React를 시작하기에 앞서, Git과 Node.js에 대해서 간략하게 설명을 합니다.

하지만 Git은 넘어가고, 자바스크립트를 실행시켜주는 플랫폼인 Node,

여러 모듈들의 의존성을 자동으로 관리해주는 NPM(Node Package manager)에 대해서 알아보도록 하겠습니다.

 

Node.js
자바스크립트 런타임

 

> Node.js란 뭘까요?

JavaScript runtime built on Chrome V8 JavaScript Engine 라고 설명이 되어있는데, Chrome V8 자바스크립트 엔진이 탑재된 자바스크립트 런타임이라고 되어있습니다.

 

https://v8.dev/

 

V8 JavaScript engine

What is V8? V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and in Node.js, among others. It implements ECMAScript and WebAssembly, and runs on Windows 7 or later, macOS 10.12+, and Linu

v8.dev

 

v8 엔진은 c++로 만들어진 web assembly engine이라고 나와있습니다. 참고로 싱글쓰레드 환경입니다.

 

 

우리는 Node를 이용해서 js파일을 실행시킬 수 있습니다. 즉, Node는 javascript를 실행시키기 위한 환경을 제공해줍니다.

우리가 js를 실행할때 Node file.js 만 쳐도 js가 실행이 됩니다.

 

Node.js의 특징입니다.

 

 

 

Uses an event-driven, non-blocking I/O model

-> efficient, light-weight이 특징이라고 되어있습니다.

 

node js는 non-blocking인 비동기 방식으로 I/O 메소드를 받습니다. 비동기처리를 통해서 얻는 퍼포먼스의 이득은 굉장하다고 나와있습니다.

 

예시를 그대로 옮겨보자면, 웹 서버에서 요청을 완료하는데 50ms가 걸린다고 가정하고, 그 중 45ms가 db관련 i/o 처리라고 해봅시다.

non-blocking이라서 45ms동안 다른 업무를 처리할 수 있습니다. 만약 blocking이 었다면 그대로 계속 단편적인 업무를 해야했을 것입니다.

 

https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/

 

Overview of Blocking vs Non-Blocking | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 


 

Node.js 는 어디에 쓰일까요?

 

1. 자바스크립트 빌드 도구를 만들때도 사용됩니다.

지금은 잘 모르지만, Bower, Grunt, Gulp..등등에 사용된다고 합니다

 

2. Server-side Development

- web server, business logic, DB access 등등에도 사용할 수 있습니다.

저번에 Express로 DB연동 할때도 require('mysql')만으로 손쉽게 할 수 있었습니다.

 

NPM
Node Package Manager

 

node.js를 이용하다보면 남들이 만든 여러 모듈이나 패키지를 import 해서 사용할 일이 굉장히 많습니다.

 

module : 각종 변수, 함수, 클래스를 묶은 file

package : 모듈을 묶은 directory

 

이러한것들을 직접 하나하나 설치하고, 관리하고, 의존성들을 고려하는것은 굉장히 힘듭니다.

이 과정들을 모두 한번에 해결해주는것이 NPM 입니다.

 

앞으로 npm install 을 이용해서 패키지를 다운로드 받을 수 있습니다.

 

npm 을 통해서 받는 Package에는 2가지가 포함되어 있습니다.

1. js files

2. package.json (manifest file)

 

아래 사진과 같이, 내가 다운받은 패키지명, 버전 등 여러 메타데이터들이 담겨있습니다.

또한 의존성관리도 스스로 해줍니다.

 

참고로 버전관리 규칙은, Sementic versioning rules를 따릅니다.

이게 뭔가 하면.. 버전 1.3.2 release 이런거.. 아시죠?

0.0.X : 간단한 버그 fix

0.X.0 : 약간 큰 변화, 하지만 코드를 엎어버린 수준은 아님

X.0.0 : major 패치, 굉장히 큰 변화가 있을경우에 바뀜.

package.json 일부

 

 

*manifest file : 패키지에 대한 정보를 담고있는 파일. (메타데이터를 담고있는 파일)

 

A manifest file in computing is a file containing metadata for a group of accompanying files that are part of a set or coherent unit. For example, the files of a computer program may have a manifest describing the name, version number, license and the constituent files of the program. (WIKI)

 

 

npm init

 

 

을 통해서 npm 을 시작할 수 있습니다.

커맨드를 입력하시면 package.json 파일이 생성될텐데, 그 전에는 버전, 라이센스 이런것들을 물어봅니다.

버전은 기본적으로 1.0.0으로 시작하게 될 것이고, 라이센스들은 MIT 라이센스 등 여러 라이센스가 있으니 찾아보시면 됩니다.

 

마지막으로

package.json에서

"script" 부분에 대해서 설명을 하겠습니다.

 

script에 써있는 "start"는

npm start

 

 

라는 명령어를 입력했을때 실행되는 것입니다.

 

저는 bash에 npm start로 쳤지만, Node에서는 react-scripts start 라고 쳐주는것입니다.

 

start 안에 내용을 "echo hi!!" 로 바꾸시고 npm start를 해보시면 terminal에 hi!! 라고 출력된것을 확인할 수 있을 것 입니다.

 

 

---END----

 

감사합니다

 

728x90
반응형