lifelong learner — urip iku urup, currently working on accenture.

Konsep Dasar untuk Memulai Pemrograman Nodejs

0
Degananda.com -

nodejs_thumb

Nodejs adalah bahasa pemrograman yang menggunakan javascript runtime V8 engine. Nodejs dapat dijalankan berbagai platform mulai dari windows, linux, unit, mac dan lain sebagainnya (multi platform). Berbeda dengan javascript yang umumnya digunakan pada sisi frontend aplikasi(web), nodejs lebih berada pada sisi backend.

Nodejs menggunakan konsep event-driven dan konsep non blocking I/O. Inilah yang menyebabkan nodejs tidak mengkonsumsi banyak memori (lightweight) serta efisien.

nodejs_chrome_v8_javascript_engine.JPG

Secara garis besar, NodeJS dibangun atas dua komponen utama.

V8 Chrome javascript Runtime environment + Javascript library = NodeJS

Konsep Dasar untuk Memulai Pemrograman Nodejs

Beberapa fitur utama yang menjadi keunggulan dan data tarik NodeJS

  • Asynchronous dan event driven – Hampir seluruh library (bukan 3rd party) yang ada pada nodejs dibuat dengan konsep asynchronous yang non blocking. yang artinnya saat library atau API tersebut dieksekusi, server nodejs tidak perlu menunggu proses eksekusi tersebut selesai sebelum menjalankan proses lainnya.
  • Relatif memiliki performa cepat – nodejs dibangun dengan menggunakan google javascript runtime engine versi 8 / V8. Sehingga performanya dapat dikategorikan cukup cepat.
  • Single threaded – artinnya, eksekusi proses – proses dalam kode nodejs akan dieksekusi dalam satu single sequence (urutan). Ibarat suatu gerbang jalan tol, hanya ada satu lajur. Tetapi, nodejs adalah nonblocking, artinnya urutan dari proses yang diekseksui dalam satu sequence tidak saling menunggu. Inilah yang membuat nodejs highly scalable.

Model Server Tradisional

traditional_server_model.JPG
traditional server model. thread vs request

pada model server-requester tradisional, setiap request yang dikirimkan ke server akan di respon oleh server dengan cara membuat thread pada request yang masuk meskipun request tersebut adalah request yang sama. Sehingga, kekuatan dari server di ukur berdasarkan jumlah thread yang dapat dibuat oleh server tersebut.

kekuatan server = jumlah thread yang dapat menghandle suatu request

Model Server NodeJS

nodejs_server_model.JPG
nodejs server model. satu main thread dengan banyak background threads untuk I/O

berbeda dengan model server tradisional, pada model server nodejs hanya terdapat satu main thread (thread utama) , namun terdapat multiple thread pada sisi background yang secara umum bertugas untuk menjalankan proses I/O (Input or Output) sedangkan Main thread berfungsi sebagai pipeline utama untuk proses eksekusi kode.

Main thread dan background thread akan di koordinasikan oleh proses bernama queue(antrian). Main thread akan mengambil task dari queue , dan akan dijalankan (di eksekusi) pada main thread tersebut.

Prinsip Coding dasar NodeJS

Prinsip dasar coding Nodejs 1 – Urutan eksekusi fungsi

suatu fungsi dapat dipanggil pada fungsi lain.

function fungsiPertama(){
    console.log('degnaanda ferdian');
}
function fungsiKedua(){
    console.log('hello world!');
    fungsiPertama();
}
fungsiKedua();

meskipun fungsiPertama() dituliskan sebelum fungsiKedua(), tetap saja pada saat kode diatas dieksekusi, fungsiKedua() akan dieksekusi terlebih dahulu dibandingkan dengan fungsiPertama(). Ini dikarenakan fungsiPertama() dipanggil didalam fungsiKedua().

Prinsip dasar coding Nodejs 2 – Callback

secara harfiah callback adalah panggilan kembali. Ini berarti pada suatu API/library, memungkinkan untuk memasukan listeneryang akan tereksekusi apabila API/library tersebut telah selesai dieksekusi.

function fungsiPertama(){
    console.log('degnaanda ferdian');
}
function fungsiKedua(){
    console.log('hello world!');
    fungsiPertama();
}
function fungsiKetiga(nama, callback){
    console.log('nama saya ' + nama);
    callback();
}
fungsiKetiga('dega', fungsiKedua);

pada kode diatas, fungsi yang menampilkan nama saya akan dieksekusi terlebih dahulu. Kemudian fungsi callback() akan dijalan setelah ‘nama saya’ ditampilkan meskipun fungsi callback dimasukan pada parameternya, fungsi itu akan ditunda proses ekseksunnya (hingga ‘nama saya’ ditampilkan). inilah yang dinamakan dengan callback.

Prinsip dasar coding Nodejs 3 – Proses Event FIFO

kode akan dieksekusi sesuai dengan urutannya (FIFO, first in first out).

function pertama(){
    console.log('1');
}
function kedua(){
    console.log('2');
}
console.log('3');
pertama();
kedua();
console.log('4');

kode diatas diproses sesuai dengan konsep FIFO, yakni 3-2-1-4. Berbeda halnya apabila fungsi timeOut() digunakan. Fungsi yang dipanggil dengan timeout akan ditunda proses eksekusinnya sesuai dengan waktu timeout tersebut.

function pertama(){
    console.log('1');
}
function kedua(){
    console.log('2');
}
console.log('3');
setTimeout(pertama, 0);
kedua();
console.log('4');

dikarenakan fungsi pertama di masukan pada timeout, maka urutan eksekusinnya adalah 3-2-4-1 sesuai dengan gambar dibawah ini

eventloop-FIFO-nodejs.JPG

(Visited 4 times, 1 visits today)
Please follow and like us:

Leave a Reply