際際滷

際際滷Share a Scribd company logo
Node.js
Surabaya, 24 April 2014
ICROSS 2014
Mohammad Anwari
@aksimdamt
Mulai melangkah dengan
息 2014 Mohammad Anwari
CC-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('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
var net = require('net');
net.createServer(
function (stream) {
stream.write('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
var net = require('net');
net.createServer(
function (stream) {
stream.write('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
Mulai melangkah dengan Node.js
var net = require('net');
var server = function(stream) {
var end = function() {
console.log('goodbyern');
}
stream.write('hellorn');
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

More Related Content

Mulai melangkah dengan Node.js

  • 1. Node.js Surabaya, 24 April 2014 ICROSS 2014 Mohammad Anwari @aksimdamt Mulai melangkah dengan
  • 2. 息 2014 Mohammad Anwari CC-by-SA
  • 3. Permasalahan input = getInput(); result = query(select * from db where id=?, input); displayResult(result);
  • 4. input = getInput(); result = query(select * from db where id=?, input); displayResult(result); apa yang kebanyakan program lakukan saat menunggu hasil dari fungsi query? diam
  • 5. Pendekatan solusi multithread context-switch memory per thread execution stack os thread vs green thread event loop
  • 6. Multithread input = getInput(); result = query(select * from db where id=?, input); displayResult(result); satu pengguna
  • 7. 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
  • 8. Event loop input = getInput(); result = query(select * from db where id=?, input); satu pengguna displayResult(result);
  • 9. 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);
  • 10. Kenapa tidak pakai event loop? tidak semua bahasa pemrograman mendukung bisa membuat kode tampak rumit kebanyakan pustaka program tidak mendukung operasi asinkronus
  • 11. Closure input = getInput(); result = query(select * from db where id=?, input, function(result) { displayResult(result); })
  • 12. Kenapa JavaScript? Mendukung pemrograman non- blocking dan async Hanya perlu satu kompetensi untuk pengembangan sistem di depan dan di belakang
  • 14. 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
  • 15. Arsitektur Pustaka inti Node.js V8 libuv lem sistem operasi aplikasi JavaScript C/C++
  • 16. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 17. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 18. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 20. var net = require('net'); var server = function(stream) { var end = function() { console.log('goodbyern'); } stream.write('hellorn'); stream.on('end', end); stream.pipe(stream); } net.createServer(server).listen(8000);
  • 23. Modul Kumpulan pustaka program dan peralatan pengembangan Menyediakan fungsi-fungsi spesifik Pengembangan aplikasi semakin mudah Lisensi F/OSS
  • 24. 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