Mulai melangkah dengan Node.js

617 views

Published on

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

Published in: Software
  • Be the first to comment

  • Be the first to like this

Mulai melangkah dengan Node.js

  1. 1. Node.js Surabaya, 24 April 2014 ICROSS 2014 Mohammad Anwari @aksimdamt Mulai melangkah dengan
  2. 2. © 2014 Mohammad Anwari CC-by-SA
  3. 3. Permasalahan input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result);
  4. 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. 5. Pendekatan solusi ● multithread ○ context-switch ○ memory per thread ○ execution stack ○ os thread vs green thread ● event loop
  6. 6. Multithread input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); satu pengguna
  7. 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. 8. Event loop input = getInput(); result = query(“select * from db where id=?”, input); satu pengguna displayResult(result);
  9. 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. 10. Kenapa tidak pakai event loop? ● tidak semua bahasa pemrograman mendukung ● bisa membuat kode tampak rumit ● kebanyakan pustaka program tidak mendukung operasi asinkronus
  11. 11. Closure input = getInput(); result = query(“select * from db where id=?”, input, function(result) { displayResult(result); })
  12. 12. Kenapa JavaScript? ● Mendukung pemrograman non- blocking dan async ● Hanya perlu satu kompetensi untuk pengembangan sistem di depan dan di belakang
  13. 13. Hati-hati Sangat memungkinkan pemrograman gaya koboi
  14. 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. 15. Arsitektur Pustaka inti Node.js V8 libuv lem sistem operasi aplikasi JavaScript C/C++
  16. 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. 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. 18. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  19. 19. 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);
  20. 20. Instalasi http://w.blankon.in/U1
  21. 21. REPL $ node
  22. 22. Modul ● Kumpulan pustaka program dan peralatan pengembangan ○ Menyediakan fungsi-fungsi spesifik ● Pengembangan aplikasi semakin mudah ● Lisensi F/OSS
  23. 23. ● 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
  24. 24. NPM Tata kelola paket Node.js

×