mulai melangkah dengan node.js

Post on 02-Jul-2015

173 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Disampaikan dalam lokakarya di acara ICROSS 2014 di Surabaya. http://www.icross.web.id

TRANSCRIPT

Node.jsSurabaya, 24 April 2014

ICROSS 2014

Mohammad Anwari@aksimdamt

Mulai melangkah dengan

© 2014 Mohammad AnwariCC-by-SA

Permasalahan

input = getInput();result = query(“select * from db where id=?”, input);displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);displayResult(result);

apa yang kebanyakan program lakukan saat menunggu hasil dari fungsi query?

diam

Pendekatan solusi

● multithread○ context-switch○ memory per thread○ execution stack○ os thread vs green thread

● event loop

Multithread

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

satu pengguna

Multithread

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

banyak pengguna

Event loop

input = getInput();

result = query(“select * from db where id=?”, input);

satu pengguna

displayResult(result);

Event loop

banyak pengguna

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

input = getInput();

result = query(“select * from db where id=?”, input);

displayResult(result);

Kenapa tidak pakai event loop?● tidak semua bahasa pemrograman

mendukung● bisa membuat kode tampak rumit● kebanyakan pustaka program tidak

mendukung operasi asinkronus

Closure

input = getInput();result = query(“select * from db where id=?”, input, function(result) { displayResult(result);})

Kenapa JavaScript?

● Mendukung pemrograman non-blocking dan async

● Hanya perlu satu kompetensi untuk pengembangan sistem di depan dan di belakang

Hati-hati

Sangat memungkinkan pemrograman gaya koboi

Node.js

platform pengembangan aplikasi diciptakan oleh Ryan Dahl (2009)

➔ ditenagai oleh mesin JavaScript V8◆ dibuat oleh Google◆ ECMAScript◆ bahasa C++

➔ fokus pada kinerja cepat◆ non-blocking◆ async events

Arsitektur

Pustaka inti Node.js

V8 libuv

lem

sistem operasi

aplikasi

JavaScript

C/C++

var net = require('net');

net.createServer(

function (stream) {

stream.write('hello\r\n');

stream.on('end',

function () {

console.log('goodbye\r\n');

}

);

stream.pipe(stream);

}

).listen(8000);

var net = require('net');

net.createServer(

function (stream) {

stream.write('hello\r\n');

stream.on('end',

function () {

console.log('goodbye\r\n');

}

);

stream.pipe(stream);

}

).listen(8000);

var net = require('net');

net.createServer(

function (stream) {

stream.write('hello\r\n');

stream.on('end',

function () {

console.log('goodbye\r\n');

}

);

stream.pipe(stream);

}

).listen(8000);

var net = require('net');

var server = function(stream) {

var end = function() {

console.log('goodbye\r\n');

}

stream.write('hello\r\n');

stream.on('end', end);

stream.pipe(stream);

}

net.createServer(server).listen(8000);

Instalasi

http://w.blankon.in/U1

REPL

$ node

Modul

● Kumpulan pustaka program dan peralatan pengembangan○ Menyediakan fungsi-fungsi spesifik

● Pengembangan aplikasi semakin mudah

● Lisensi F/OSS

● Global○ Dapat digunakan di keseluruhan sistem○ Digunakan untuk alat bantu pengembangan

● Lokal○ Digunakan pada spesifik pada proyek

pengembangan■ Digunakan pada tahap pengembangan saja■ Digunakan pada produksi saja

Modul

NPM

Tata kelola paket Node.js

top related