Mulai melangkah dengan Node.js

25
Node.js Surabaya, 24 April 2014 ICROSS 2014 Mohammad Anwari @aksimdamt Mulai melangkah dengan

description

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

Transcript of Mulai melangkah dengan Node.js

Page 1: Mulai melangkah dengan Node.js

Node.jsSurabaya, 24 April 2014

ICROSS 2014

Mohammad Anwari@aksimdamt

Mulai melangkah dengan

Page 2: Mulai melangkah dengan Node.js

© 2014 Mohammad AnwariCC-by-SA

Page 3: Mulai melangkah dengan Node.js

Permasalahan

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

Page 4: Mulai melangkah dengan Node.js

input = getInput();

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

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

diam

Page 5: Mulai melangkah dengan Node.js

Pendekatan solusi

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

● event loop

Page 6: Mulai melangkah dengan Node.js

Multithread

input = getInput();

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

displayResult(result);

satu pengguna

Page 7: Mulai melangkah dengan Node.js

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

Page 8: Mulai melangkah dengan Node.js

Event loop

input = getInput();

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

satu pengguna

displayResult(result);

Page 9: Mulai melangkah dengan Node.js

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);

Page 10: Mulai melangkah dengan Node.js

Kenapa tidak pakai event loop?● tidak semua bahasa pemrograman

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

mendukung operasi asinkronus

Page 11: Mulai melangkah dengan Node.js

Closure

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

Page 12: Mulai melangkah dengan Node.js

Kenapa JavaScript?

● Mendukung pemrograman non-blocking dan async

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

Page 13: Mulai melangkah dengan Node.js

Hati-hati

Sangat memungkinkan pemrograman gaya koboi

Page 14: Mulai melangkah dengan Node.js

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

Page 15: Mulai melangkah dengan Node.js

Arsitektur

Pustaka inti Node.js

V8 libuv

lem

sistem operasi

aplikasi

JavaScript

C/C++

Page 16: Mulai melangkah dengan Node.js

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);

Page 17: Mulai melangkah dengan Node.js

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);

Page 18: Mulai melangkah dengan Node.js

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);

Page 19: Mulai melangkah dengan Node.js
Page 20: Mulai melangkah dengan Node.js

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);

Page 21: Mulai melangkah dengan Node.js

Instalasi

http://w.blankon.in/U1

Page 22: Mulai melangkah dengan Node.js

REPL

$ node

Page 23: Mulai melangkah dengan Node.js

Modul

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

● Pengembangan aplikasi semakin mudah

● Lisensi F/OSS

Page 24: Mulai melangkah dengan Node.js

● 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

Page 25: Mulai melangkah dengan Node.js

NPM

Tata kelola paket Node.js