Mulai melangkah dengan Node.js
-
Upload
mohammad-anwari -
Category
Software
-
view
173 -
download
2
description
Transcript of Mulai melangkah dengan Node.js
![Page 1: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/1.jpg)
Node.jsSurabaya, 24 April 2014
ICROSS 2014
Mohammad Anwari@aksimdamt
Mulai melangkah dengan
![Page 2: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/2.jpg)
© 2014 Mohammad AnwariCC-by-SA
![Page 3: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/3.jpg)
Permasalahan
input = getInput();result = query(“select * from db where id=?”, input);displayResult(result);
![Page 4: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/4.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/5.jpg)
Pendekatan solusi
● multithread○ context-switch○ memory per thread○ execution stack○ os thread vs green thread
● event loop
![Page 6: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/6.jpg)
Multithread
input = getInput();
result = query(“select * from db where id=?”, input);
displayResult(result);
satu pengguna
![Page 7: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/7.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/8.jpg)
Event loop
input = getInput();
result = query(“select * from db where id=?”, input);
satu pengguna
displayResult(result);
![Page 9: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/9.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/10.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/11.jpg)
Closure
input = getInput();result = query(“select * from db where id=?”, input, function(result) { displayResult(result);})
![Page 12: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/12.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/13.jpg)
Hati-hati
Sangat memungkinkan pemrograman gaya koboi
![Page 14: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/14.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/15.jpg)
Arsitektur
Pustaka inti Node.js
V8 libuv
lem
sistem operasi
aplikasi
JavaScript
C/C++
![Page 16: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/16.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/17.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/18.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/19.jpg)
![Page 20: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/20.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/21.jpg)
Instalasi
http://w.blankon.in/U1
![Page 22: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/22.jpg)
REPL
$ node
![Page 23: Mulai melangkah dengan Node.js](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/23.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/24.jpg)
● 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](https://reader033.fdocument.pub/reader033/viewer/2022050808/559470641a28aba00e8b46b1/html5/thumbnails/25.jpg)
NPM
Tata kelola paket Node.js