티스토리 뷰
1. Node JS의 소개
- 2009년 Ryan Dahl 처음 소개한 프로젝트
- 자바 스크립트 언어를 응용 프로그램에서도 사용할 수 있도록 만들어내는 프레임워크
- 자바 스크립트를 사용해서 서버용 어플리케이션을 만들 수 있음
* 특징
- 싱글 쓰레드를 기반으로 비동기 I/O 사용
- 이벤트 기반으로 동작하게 됨
- 네트워크 애플리케이션에 적합(디스크, 데이터 베이스와 같은 I/O를 처리해야 하는 일이 많음)
- 멀티 쓰레드를 서버를 다루기에는 어려움, 그에 비해서 싱글 쓰레드로 작성하게 되면 서버 만들기에 굉장히 쉬움
- 비동기 I/O를 이용하여 코드작성도 쉽고 , 동기식 I/O가 가지는 기다림이 없는 서버를 만들 수 있음
* 비동기 I/O란?
- 시간이 걸리는 I/O? 하드디스크 접근, 데이터베이스 서버, 네트워크를 이용해서 다른 서비스 접근
- I/O 동작이 끝날때까지 대기 : 동기식, I/O동작이 끝날때까지 대기하지 않는것 :비동기식
* 장점
- 싱글 쓰레드로 작성
- 비동기 I/O
- 간단한 구조의 경량 프레임워크와 풍부한 라이브러리
- 서버와 클라이언트에서 사용하는 언어 동일
- 실시간 소셜 서비스, 데이터 중심 서비스에서 많이 사용 , IOT 분야에서도 많이 사용
* 아키텍쳐
- 상위레벨 - Javascript
- 로우레벨 - C / 바인딩, v8 엔진, libev : Event, libeio : I/O 엔진
* Node.js 재단
- Node.js 플랫폼과 관련된 모듈 개발 지원하는 협업 오픈 소스 프로젝트
- 주요 멤버 : 레드헷, 마이크로 소프트 등등 ...
* 버전 구성
- LTS(Long Term Support) -> 짝수 버전 Stable 6개월 이후 LTS로 전환
- 호환성이 깨지는 변경 없음
* 프로그래밍 모델
- 동기(Synchronous) -> 실행이 끝나고 다음 실행
- 비동기(Asynchronous) -> 실행결과가 끝날때까지 기다리지 않음
ex) 동기식 파일 읽기 - 순차적으로 실행
1. var fs = require('fs');
2. var content = fs.readFileSync("readme.txt", "utf8");
3. console.log(content);
4. console.log("Reading file ... ") ;
ex) 비동기식 파일 읽기
1. var fs = require('fs');
2. fs.readFile("readme.txt", "utf8", function(err, content) {
3. console.log(content);
}); -> 안에있는 callback함수가 나중에 실행
4. console.log('Reading file..");
* 콜백 함수 형태
- 비동기 함수의 에러처리 -> 콜백함수의 파라미터로
cf) 콜백함수란? 다른 코드의 인수로서 넘겨주는 실행 가능한 코드
* 대부분 비동기 API
callbackFunc(arg1, arg2, function(error, result){
if(error){
// 에러처리
return;
}
//정상처리
}
2. Node js 설치
>> node -v
* node js 콘솔 명령어
>> node --help
- v : 버전
- e, p : 스크립트 평가
- c : 실행하지 않고 문법 체크
- r : 모듈을 미리 로딩
Options: -v, --version print Node.js version -e, --eval script evaluate script -p, --print evaluate script and print result -c, --check syntax check script without executing -i, --interactive always enter the REPL even if stdin does not appear to be a terminal -r, --require module to preload (option can be repeated) - script read from stdin (default; interactive mode if a tty) |
* REPL 환경
- 한줄자리 코드 실행할때
- >> node
3. Example
(1) Hello World 작성
// helloworld.js |
실행 -> node helloWorld.js (js) 생략가능
(2) 간단한 서버 설치
// helloworld2.js http.createServer(function(request,response){ response.writeHead(200, {'Content-Type' : 'text/html'}); response.end('<h1> Hello World! </h1>'); }).listen(3000); |
실행 -> node helloworld2.js / 127.0.0.1:3000
4. 모듈
- Node.js 간단한 구조
- 필요한 모듈을 로딩
- 모듈 : 다른 언어의 라이브러리에 해당
* 도큐먼트 보기 -> stability를 보고 deprecated된건 사용되지 않음
- Node.js 사이트
- DOCS - nodejs.org/api/
- API
* 모듈 사용하기
- 모듈 Readlie 1) 클래스 2) 메소드 3) 이벤트 4) 모듈 함수
* 모듈 로딩
- require("모듈 이름")
- 절대경로 혹은 상대 경로 , var readline = require('readline');
* 모듈 종류
- 기본 모듈 : 미리 컴파일된 상태로 라이브러리 디렉토리
위치 : Node.js 라이브러리 디렉토리
- 확장모듈 : npm으로 별도설치필요
위치 : 같은 폴더 or node_modules 이름 폴더 or 상위 폴더의 node_modules
<출처>
1. www.youtube.com/watch?v=truL1LwV3_I&t=1262s
2.
'Programming > FULL STACK' 카테고리의 다른 글
[JAVA] static과 접근 제한자 (0) | 2022.05.06 |
---|---|
[Node.js] 동기와 비동기 , 그리고 블로킹과 논 블로킹 (0) | 2021.01.20 |
[WebRTC] 기본적인 개념과 코드 설명 (0) | 2020.08.19 |
[JAVA] JAVA 웹 개발 JSP 요약 (0) | 2020.07.11 |
Node.js와 npm, yarn 개발환경 설정하기 <Window 기준> (0) | 2020.06.03 |