개발세발
Node.js - 1️⃣ 개념 본문
2010 | Express (노드 웹서버 프레임워크의 표준) |
2013 | React |
2014 | Babel, webpack |
한 언어로 풀스택 구현
➡️ 코드의 핵심을 모든 곳에서 공유하기 때문에 코드의 재상용성을 극한으로 끌어 올릴 수 있음
➡️ 서버사이드 렌더링을 자유롭게 구현 가능
v8 은 c++로 개발되어 브라우저 내부가 아니여도 엔진을 사용할 수 있었음
브라우저에서 독립해서 사용할 수 있었던 v8를 떼어내 자바스크립트를 어디에서나 실행할 수 있는 node.js를 개발함
즉, node.js는
크롬의 자바스크립트 엔진인 V8를 이용하여 자바스크립트를 브라우저가 아닌 어디에서나 사용할 수 있게 해주는 자바스크립트의 실행환경(Javascript's Runtime)
요청하는 주체 : client
요청을 받아서 데이터를 반환하는 주체 : 서버
url : 웹서버의 주소
Common JS
const calc = require("./calc"); //내보낸 것의 경로를 명시하여 받아오기
console.log(calc);
console.log(calc.add(1, 3));
const add = (a,b) => a + b;
const sub = (a,b) => a - b;
module.exports = { //내보내기
moduleName : "calc module",
add : add,
sub : sub,
};
module
: 모듈을 내보낼 수 있고 불러와서 사용할 수 있는 함수같이 기능을 제공
* node.js에서는 모듈단위로 데이터를 내보내고 받아와서 사용할 수 있음
npm(Node Package Manager)
: Node.js의 패키지 관리 도구
- node.js를 사용하면서 다른 사람이 만든 모듈을 내려받아 사용할 수 있게 하거나 자체 프로젝트를 관리할 수 있게 해주는 것
Package : 누군가 만들어둔 node.js모듈
package.json
- 만들 package에 정보를 입력하는 환경정보 파일
진입파일 : 패키지 실행의 시작이 되는 파일
script : 패키지를 개발하면서 자주 실행해야 되는 명령어를 사전에 정의해 두는 것
** npm 사용해보기
npm
Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java
www.npmjs.com
위의 사이트에서 다양한 npm을 확인해 볼 수 있다
https://www.npmjs.com/package/randomcolor
randomcolor
A tiny script for generating attractive random colors. Latest version: 0.6.2, last published: 2 years ago. Start using randomcolor in your project by running `npm i randomcolor`. There are 345 other projects in the npm registry using randomcolor.
www.npmjs.com
package.json
: 대략적인 package를 알 수 있음 (^ 표시 )
package-lock.json : 정확히 설치된 버전을 알 수 있음
➡️ 설치된 모듈 정보 확인
const randomColor = require("randomcolor");
let color = randomColor ();
let color2 = randomColor ();
let color3 = randomColor ();
console.log(color, color2, color3);
자바스크립트
스크립트 언어 -> 한줄한줄 실행되는 언어
** 이벤트 루프의 비동기적 성질
: 자바스크립트는 이벤트 루프를 활용해서 동작하도록 되어있음
I/0 Bound : 요청하고 기다리기
고전적인 요청하고 기다리기 방식은 너무 많은 클럭 수를 낭비함
**Clock : CPU속도를 나타내는 대표적인 단위.
- 1초당 CPU내부에서 몇 단계의 작업이 처리되는 지를 측정해 이를 주파수 단위인 'Hz(헤르츠)'로 나타냄
- 클럭 수치가 높을 수록 빠른 성능의 CPU라고 할 수 있음
과거에는 클럭 속도가 CPU의 성능을 나타내는 절대적인 기준이었지만, 최근에는 하나의 CPU에 2개 이상의 코어(Core)를 집어넣은 다중 코어(Multi Core) CPU가 등장하여 CPU성능을 나타내는 또 하나의 기준이 되고 있음.
자바스크립트 식 비동기 처리 방식 : 콜백 방식 활용 ➡️ 노드의 제일 큰 특징
: 자바스크립트는 언어 수준에서 이미 비동기 문제를 잘 해결해 둠
** 오프로딩
: 컴퓨팅 자원 및 계산 속도의 한계를 극복하기 위해 로컬 컴퓨터에서 수행하는 어플리케이션의 일부를 컴퓨팅 자원과 처리 능력이 우수한 원격지 컴퓨터에 전달하여 처리한 후 결과를 반환하는 방식
➡️ 저수준의 오래 걸리는 일은 Node에게, 고수준의 로직은 메인 스레드에서 해결하는 것
: Node가 빠른 속도와 매우 높은 확장성을 갖는 근본적인 이유
저수준 처리는 Node가 빠르게 처리하는데 있어서 한계를 가지기 때문에
Node.js는 C와 WebAssembly 모듈을 바인딩해 사용하는 방법을 제공하고 있음
- C : node-gyp를 통해 제공하고 있음
- WebAssembly : Node 12버전부터 제공되고 있음
* WebAssembly
: binary instruction format (브라우저를 위한 assembly)
** 어셈블리어 : 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
Node의 대표적인 약점은 저수준 처리인데 C와 WebAssembly 등을 통해서 해결할 수 있음
* n
Node.js version management
GitHub - tj/n: Node version management
Node version management. Contribute to tj/n development by creating an account on GitHub.
github.com
n을 이용한 node.js 버전 관리(n - Node.js version management)
기존 개발환경에서는 node.js 10.16.3 버전을 사용하고 있었으나, 스터디를 할때 13.7.0 버전을 사용해야 해서 버전관리에 대한 필요성을 느꼈다. 'n' 이라는 패키지를 이용하면 손쉽게 node의 버전을
055055.tistory.com
'코딩공부 > Node' 카테고리의 다른 글
node, 프론트, 백 분리하기 (0) | 2022.12.26 |
---|---|
Node.js - 3️⃣ 템플릿 엔진 (0) | 2022.11.20 |
Node.js - 2️⃣ 페이지 띄우기 (0) | 2022.11.20 |