startup javascript 7 - node.js 기초

Post on 21-Jan-2017

204 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Startup JavaScript7. Node.JS 소개

THINKER TO MAKER

x

Full Stack Developer

THINKER TO MAKER

Node.JS

JavaScript 활용의 확산구글의 Chromium 프로젝트를 위한 V8 엔진 개발브라우저 성능 비약적인 발전 , 오픈소스로 인한 타 분야 적용 가능성 대두

오픈소스 JIT(Just In Time) 가상 머신

오픈소스 JavaScript 엔진

크롬 브라우저에 탑재

실행하기 전 기계어로 컴파일

JavaScript 처리 성능 향상

인라인 캐싱 (Inline Caching) 최적화 기법 적용

Node.JS

확장성 있는 네트워크 앱 ( 서버 ) 을 개발하는데 사용되는 S/W 플랫폼 임내장 http 라이브러리로 별도의 웹 서버 없이 동작 가능 함

JavaScript 를 이용한 언어

Web, Server, H/W 를 한번에

클라이언트 , 서버 , 하드웨어 개발이 가능

Socket.IO 를 통한 손쉬운 실시간 통신 가능

H2M, M2M, H2H 을 한번에

H2H, H2M, M2M 모두 쉽게 구현 가능

NPM 을 통한 350,000 여개의 라이브러리

JavaScript, Node.JS 의 강력한 지원

Github, Stackoverflow 의 풍부한 JS 관련 자료

Node.JS with Hardware

운영체제가 있는 시스템에 설치 가능 -> 마이크로컴퓨터에 탑재 가능하드웨어 제어용 API 제공 (SerialPort, WiringPi) -> Things 제작 가능

+ Hardware

Event-Loop

Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능이는 I/O 처리가 많은 프로그래밍에 특히 효율적 임

Event Loop

Event

Event

Event

Event

Event

Event Queue Thread Pool

file system

network

process

other

< 14 CACHE 250RAM 41,000,000Disk 240,000,000

Net-work

Node.JS 선택LTS(Long Term Support) 와 일반버전으로 제공 됨최신 기술을 위해서는 일반 버전이 좋으나 , 운영 고려 시 LTS 버전이 용이

Node.JS 설치http://www.nodejs.org6.X 버전대의 LTS 가 2016 년 11 월 부터 시작 됨 . 다운로드 및 설치

Node.JS 설치 확인Node.JS 및 NPM 설치 버전 확인 . 명령 뒤에 – v 를 이용하여 버전 확인정상적으로 설치되었다면 , Node.JS 는 6.x.x, NPM 은 3.x.x 형태로 표시 됨

Hello World 확인Node 를 시작하면 , 인터프리터 형식으로 프로그래밍이 가능console.log(‘hello world’) 를 입력하여 결과가 나오는 지 확인

기본 편집 프로그램 설치다양한 코딩 용 프로그램 존재 . Note Pad++, Sublime Text 가 많이 쓰임 .최근에는 Visual Studio Code, Atom 등도 많이 사용되고 있음

초 간단 웹 서버 구축

THINKER TO MAKER

http module

웹 서버 구축하기HTTP 는 HTML 페이지 및 파일을 전달하는데 쓰이는 프로토콜 임HTTP 웹 서버와 클라이언트를 생성하는 것과 관련된 기능을 담당

Hello Server

var http = require('http');

http.createServer(function(req, res){ res.writeHead(200, {'Content-Type' : 'text/html'}); res.end('Hello World!');

}).listen(80,'127.0.0.1');

console.log('Server is running!');

기존 프로그램은 서버 어플리케이션 개발이 어려웠으나 , Node.JS 에서는 단 몇 줄만으로 서버 구축을 할 수 있음

내장 객체

THINKER TO MAKER

process, os

내장 모듈 Process

프로그램과 관련된 정보를 나타내는 객체로 , 브라우저에 존재하지 않음

메소드 /변수 명 설명argv 실행 매개변수 , 어떤 파일에서 실행된 것인지 알려줌env 컴퓨터 환경 관련 정보version NodeJS 정보 반환 (ex 0.12.01)

arch 프로그램 아키텍처 (ex 32bit, 64bit)

platform 플랫폼memoryUsage() 메모리 사용량uptime() 프로그램이 실행된 시간exit() 프로그램 종료

내장 모듈 OS

운영체제와 관련된 유틸리티 함수 . require(‘os’) 로 정의하여 사용 함 .

메소드 명 설명tmpdir() 시스템의 기본 임시 폴더를 반환hostname() 운영 체제의 호스트 이름type() 운영 체제의 이름platform() 운영체제arch() CPU 아키텍쳐uptime() 운영체제가 실행된 시간loadavg() 운영체제 Load Average

totalmem() 메모리freemem() 가용 메모리cpus() cpugetNetworkInterfaces() 네트워크 환경

파일 관리 및 실행

THINKER TO MAKER

fs, child_process

파일 쓰기 / 읽기간단하게 파일을 읽고 쓸 수 있음 . 동기식 , 비 동기식 방법 모두 지원 함상황에 따라 맞는 방식을 선택해야 함 .

var fs = require('fs');

// Sync Writefs.writeFileSync('hello1.txt','Hello World');

// Async Writefs.writeFile('hello1.txt','Hello World', function(err){

if(err) { throw err; }});;

// Sync readvar data = fs.readFileSync('hello1.txt','utf8');console.log(data);

// Async readfs.readFile('hello2.txt','utf8', function(err, data){

if(err){ throw err; }console.log(data);

});;

디렉토리 관리디렉토리를 읽고 / 쓰고 / 삭제 하는 다양한 동기 / 비동기 라이브러리 제공 .fs.stat() 함수를 이용하여 다양한 파일에 대한 정보를 획득 가능var fs = require('fs');var path = '/';

fs.readdir(path, function(err, files){if(err) throw err;files.forEach(function(file){

console.log(path + file);fs.stat(path + file, function(err, stats){

console.log(stats);});

});});

fs.mkdir('/nodejs',0666, function(err){if(err) throw err;fs.rmdir('/nodejs', function(err){

if(err) throw err;}

});

파일 실행파일 실행을 위해 exec 와 spawn 을 사용할 수 있음 .실행 중인 정보를 받기 위해서는 spawn, 결과만 받을 때는 exec 를 사용함var exec = require('child_process').exec;var spawn = require('child_process').spawn;

exec('ver', function(err, stdout, sterr){if(err) throw err;console.log(stdout);

});

var proc = spawn('netstat', ['http://www.circul.us']);

proc.on('exit', function(){// todo after exit program

});

proc.stdout.on('data', function(data){console.log(data);

});

proc.stderr.on('data', function(data){console.log(data);

});

W www.circul.us G group.circul.us S social.circul.us C cafe.circul.usCONTACT.US circulus@circul.us

THINKER TO MAKER

ANYQUES-TION?

x

top related