개발 노트

nodejs 본문

nodejs

nodejs

Meter216 2022. 12. 5. 17:52

목차

nodejs

 - 프로그램

 - 프로세스

 - node 설치

nodejs의 실행방법

- repl

- js 직접실행

thred

모듈


Nodejs

 

프로그램

 

동작을 할 코드들의 집합

 

프로세스

 

하나의 프로그램을 돌리기 위해 실행되는 모든 것

프로세스는 하나의 PID를 가진다.

브라우저를 통해 js를 실행하면 컴퓨터 조작 x 하지만 노드를 이용하면 컴퓨터 조작이 가능하다.

 

노드는 JS를 실행시켜주는 "프로그램" 이다

node를 통해서 js를 실행하면 컴퓨터를 조작 할 수 있다. (브라우저는 조작 할 수 없다.)

  == 하드웨어를 조금 조작 할 수 있다.

노드는 윈도우 객체가 없다. 브라우저에서 시작하는 js와 노드에서 시작하는 js는 내장 객체가 다르다. 

그래서 .document 로 이용했던 것들이 없다. 

 

노드 = 서버 x  노드를 이용해서 서버를 만드는것(백엔드) 

 

노드는 6개월마다 하나씩 올라감

lts버전이 안전한 버전  // 현재버전 = 최신기능


nodejs 설치하기

 

linux에 설치하기

 

직접설치도 가능하지만 nvm(node version manager) 을 이용해서 설치

노드는 매년 2단계씩 높아지는데 내가 필요한게 하위버전 일수도 있고 상위버전 일수도 있다.

그래서 버전을 쉽게 바꾸는 것이 필요하다

 

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

$ cd ~

$ vi . zshrc
$ source ~/.zshrc

$ nvm --version 설치 확인

$ nvm list    //설치 할 리스트 확인
$ nvm install --lts   ///설치
$ node --version  /// 버전확인

노드라는 프로그램만 설치한것

 

Nodejs는 

 - 이벤트 기반

 - 논 블로킹 I/O

     프로세스와 스레드를 알아야한다.


nodejs 실행방법 2가지

 

repl

 

루프를 도는 것

window와 돌아가는 곳이 다르다.  (this를 찍으면 다르게 찍힌다.)

js를 해석해주는 프로그램을 설치한것

 

repl 나가는 방법

ctrl + c , ctrl + c 2번

ctrl d

 

ps -ef | grep node

를 사용하면 프로세스의 아이디를 확인 할 수 있다.

 

repl 외에도 js 터미널에서 직접 실행을 시킬수도 있다.

 

forground process

 

눈에 보이는거

롤 클라이언트 처럼 눈에 보이게 돌아가고 있는것

종료는 ctrl c

 

background process 

 

눈에 안보이는것

백신같이 눈에 안보이는데 돌아가고 있는것

종료는 아이디를 알아야한다.

$ kill -9 pid
$ ps -ef | grep node

프로세스는 꼭 하나의 쓰레드를 가지고 있다.

node는 쓰레드를 추가하지 못한다.

1개의 프로그램을 실행 > 1프로세스

 

 

Thread

 

멀티 스레드 : 사람이 여러

멀티 프로세스 : 기계가 여러개

싱글 스레드: 쓰레드가 두개 내가 컨트롤 할 수 있는 쓰레드가 한개 

 (nodejs는 싱글스레드지만 멀티스레드처럼 복잡한 처리를 해주기 때문에 개발이 빠르다.

하나의 스레드만 작동하기 때문에 코드가 단조롭다.)

 

익스플로러와 크롬의 차이

익스플로러 = 멀티 스레드 >> 기계가 터지면 사람들도 짤림.

크롬 = 멀티 프로세스 >> 기계가 터져도 하나만 터지기에 다른것으로 대체가 가능

 

스레드끼리 연결되어 있으면 데이터 공유가 가능하다

프로세스는 불가능  

통신이 되어 있으면 프로세스끼리 데이터 공유가 가능하다.

 

모듈

 

한 파일에 모든 소스코드를 적으면 불편하다.

그래서 단적인 예로 파일을 규칙에 맞게 쪼개기 시작한다.

모듈은 우리가 구현하려는 프로그램에 있어서 "작은 단위 " 이다.

 

const list = [
    {
        index:0,
        subject:"아방이",
        data:"22-12-05",
        hit:0
    }
]

module.exports = list

module.exports 는 list 라는 변수를 내보내서

require 을 했을 때 list 라는 변수만 보내겠다는 뜻.

 

view > list > 프로세스 실행 > view로 값을 받아옴

'nodejs' 카테고리의 다른 글

nodejs 게시판  (0) 2022.12.20
Express  (1) 2022.12.14
http tcp 미완.2  (0) 2022.12.09
nodejs [3way handshake]  (0) 2022.12.07
nodejs [내장객체,케싱,내장모듈,osi7계층]  (0) 2022.12.06