Pengenalan Node Js -->

Pengenalan Node Js

Sorayakit
06 November 2016



Node JS
Apa itu Node js? Node js adalah sebuah runtime atau platform yang diisi bahasa pemrograman javascript.

Node JS diciptakan untuk membuat aplikasi jaringan seperti web server,  web e-commerce, Linked. Dan di blog ini implementasi dari node js cukup dominan karena kemampuannya untuk di instal di sistem perangkat lain seperti raspberry pi. Sebuah perangkat  Raspberry yang tersemat node js dengan sedikit polesan script akan berubah menjadi perangkat berbasis web yang mengagumkan.
Selain raspi, arduino, intel edison dan banyak perangkat lain juga bisa diinstal node JS.

Berikut analogi node JS di sebuah server.


Dulu javascript di pakai hanya sebagai bahasa untuk pengembangan aplikasi web yang berjalan pada sisi client atau dibrowser saja.

Sejak ditemukannya Node.js oleh Ryan Dahl pada tahun 2009, Javascript akhirnya memiliki wadah untuk digunakan sebagai bahasa pemrograman di sisi server
                     

Berikut kutipan langsung dari web resminya apa itu Node js https://nodejs.org
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

dari pernyataan diatas, kalau diurai sbb:

a. Chrome’s Javascript runtime
b. Fast & Scalable network
c. Event-driven, non-blocking I/O
d. Data-intensive real-time application

a. Chrome’s Javascript runtime
Node menggunakan v8 Mesin untuk menjalankan javascript V8 Ini adalah mesin terbaru Google, berarti jangan khawatir menggunakan Node karena update script dan kompatibel mengikuti standar ECMA

b. Fast − Scalable
Dengan Google Chrome's V8 JavaScript Engine dan pustaka (API) membuat node bekerja dengan cepat, karena semua API bekerja degan metode Asynchronous sangat cepat dalam eksekusi kode, Asynchronous kebalikan dari Sinkron.

Asinkron bisa disebut bekerja secara paralel 
Scalable− Node menggunakan model single threaded event looping. Single threaded ini semacam customer service dengan pelayanan satu pintu yang sedang di gaung gaungkan pemerintahan Jokowi JK.. :)  dan event looping sebagai kumpulan waiters’nya yang siap sedia menyebar dan mengantar pesanan apa saja.

Dengan mekanisme event looping ini membantu server untuk merespon permintaan tanpa blocking / menahan tugas baru yang datang, kenapa ditahan? Karena tugas sebelumnya belum selesai.  

Dengan tidak menahan/non block, server bisa menampung banyak permintaan task1,2,3 dst.

c. Asynchronous and Event Driven
Semua API di Node js bekerja secara asynchronous, asinkron berarti bekerja dengan tidak serempak, artinya perintah yang masuk akan diterima lalu diolah dan jika selesai akan dikabarkan segera.

 Tugas baru yang datang dari Node.js app, akan diterima dan disebar oleh event loop ke thread (sekumpulan instruksi)  1,2 dst yang siap menampung. Jika tugas sudah selasai akan segera direspon atau return ke client dengan segera istilah ini disebut callback.

Setiap Request adalah sebuah tugas atau task, task ini akan selalu dicatat lalu dipanggil kembali (callback) baik yang baru datang ataupun sudah selesai.

Siklus request dimulai dari app lalu event loop kemudian thread kemudian return. Dan siklus ini adalah sebuah mekanisme yang disebut event driven.



d. Dan data-intensive real-time application

Fitur Node.js lainnya yang membuat node patut dipilih adalah:
  • No Buffering − Node.js tidak melakukan buffer data namun melakukan teknik chunks (potongan-potongan)
  • License − Node.js rilis dengan lisensi perangkat lunak bebas  guna alias gratis (MIT license) 
  • Reused - Code bisa digunakan di client side dan server side (code reused)


NPM (Node Package Manager)
Node JS tidak bekerja sendirian, Dibutuhkan modul modul custom untuk menunjang kerja yang kita inginkan. Jika sobat ingin manambah misal kalender di website maka kita bisa menambah modul kalender, kemudian jika kita melakukan instalasi node js di raspberry dan ingin berkomunikasi dengan port gpio raspi kita bisa memasang modul rpio dan kemudian saat node JS dibangun untuk server e comerce maka dibutuhkan modul e-commerce. Modul modul ini di luar node js. Untuk memasang modul tersebut kita hanya perlu download melalui NPM (Node Package Manager), dan npm secara otomatis akan mengambil modul yang telah disediakan di online repositori  https://npmjs.org

NPM ini bawaan dari Node js yang bekerja bukan hanya mendowload saja, tapi memiliki fungsi utama sebagai utility command line (run & stop server) dan seorang web developer banyak bekerja dengan NPM seperti melakukan pengaturan dependency (menambah, membuang atau merevisi modul) dan banyak perintah lain yang bisa dikerjakan melalui npm.

NPM setelah versi v0.6.3 sudah di bundel dengan Node. Jika kita download Node js  akan include dengan NPM.

Beberapa command di NPM
•    Contoh command untuk cek versi NPM:
npm –version
•    Contoh command untuk update NPM:
npm install npm -g
•    Contoh command untuk mencari modul express:
npm search express

Sangkin banyaknya orang yang mendownload modul di repository npm bisa dilihat statistik www.modulecounts.com, yang menggambarkan komparasi 1 tahun terahir Node js/NPM-2016 lebih unggul dari bahasa pemrograman lain (line hijau)


Image source : www.modulecounts.com

Di sadur dari website resminya, node JS adalah sebuah platform yang kusus dibangun untuk aplikasi  jaringan, dimana node js menggunakan program javascript yang dulu hanya dipakai di sisi Client atau front end. Javascript di sisi Client bernaung di browser seperti Firefox, IE atau Chrome yang biasa kita pakai browsing.
 

Sebagai tambahan, sisi frond end ini Javascript tidak bekerja sendiri masih ada dua bahasa yang digunakan seperti HTML (Hyper text markup language) dan CSS (Cascading Style Sheets). Ibarat bangunan rumah..HTML rangka rumah, css sebagai interior dan javascript yang punya rumah kurang lebih seperti itu..

Protokol HTTP
Node js yang dijadikan server  akan kusus bekerja melayani banyak Client. Komunikasi antara server dan Client menggunakan protokol http.

Client yang melakukan request ke Server dan server melakukan respon ke Client menggunakan protokol HTTP yang disediakan oleh modul http.


Metode http
Protokol HTTP memiliki beberapa metode, yaitu mengambil data, menaruh data atau menghapus data di server,  


Metode kerja http secara umum sbb:
•    GET – Metode yang hanya bisa membaca resource (ambil data diserver)
•    PUT – Digunakan untuk membuat resource baru (Buat data diserver)
•    DELETE – Buang resource
•    POST – Ini untuk update resoure yang sudah ada.

setiap melakukan metode HTTP, maka client akan mendapatkan HTTP Header yang  berisi informasi status data yang kita minta.

Contoh metode GET, dengan request ini client sudah tentu ingin data yang dikirim sesuai dengan yang diminta kalaupun data yang diminta tidak ada, akan ada informasi balik yang disebut Header infomation

Beberapa informasi di header saat kita melakukan request adalah sbb.


 Lima informasi utama:
•   Verb, Menunjukkan metode HTTP seperti GET, POST
•   URI, Berisi URI, Uniform Resource Identifier untuk mengidentifikasi sumber daya pada server
•   HTTP VERSION, menunjukkan versi HTTP, misalnya HTTP v1.1.
•   Request Header, berisi metadata dari HTTP, seperti format yang didukung oleh klien, format isi pesan, pengaturan cache dll
•   Request  body, pesan atau representasi sumber daya yang diminta.

Respon HTTP



•   Response code, Status atau respon dari status server. Respon diberikan dengan kode angka, Misal 404 artinya file yang diminta tidak ditemukan di server atau NOT FOUND atau 200 berarti  sumber daya tersedia dengan status OK.
•   HTTP VERSION- menunjukkan versi HTTP, misalnya HTTP v1.1.
•   Response Header
Response header dalam bentuk metadata, yang berisi panjang konten, jenis konten, tanggal respon dan jenis server.
•  Respon body
Ini adalah isi pesan atau representasi sumber daya yang diminta.

Berikut beberapa nomor status standar.
•    200    OK, Berhasil tampil.       
•    404    NOT FOUND, tidak tersedia, error page (resource not available)

5. RESTful (Representational State Transfer) dan HTTP

HTTP hanyalah salah satu dari banyak protokol untuk melakukan komunikasi client dengan server. Karena ada juga yang tidak menggunakan desain jaringan menggunakan protokol HTTP.

Jika Menggunakan protokol HTTP maka masuk dalam desain jaringan  berarsitektur  REST dan jika telah meng’implementasikan arsitektur REST dalam web service disebut RESTfull. 

Webservice yang dimaksud adalah Node js, sebuah RESTfull yang di desain menggunakan arsitektur REST



6. Membuat Server Node Js
Penulis sudah mukadimah, rasanya kurang jika kita tidak coba membuat server sederhana menggunakan Node js, diharapkan kita sudah sedikit paham pemrograman javascript, tips jika tidak mendalam dipemrograman minimal mengerti script garis besarnya. jika mengerti fungsi dan cara kerjanya kita bisa kutip jutaan script didunia luar yang bisa sedikit dimodifikasi syntax’nya sesuai kebutuhan, seperti yang penulis lakukan dan ini andalan saya... :)

Berikut ini script untuk pembuatan server menggunakan modul Http. http ini modul yang dikhususkan untuk membangun server, modul ini bawaan dari node kita hanya butuh impor saja kemudian deklarasikan penggunaan httpnya.
Pastikan sobat sudah menginstall node js kalau belum bisa lihat referensi Cara install node js di windows


Pertama:
a.   Buka aplikasi Node.Js command prompt

b. Buat folder dengan cara ketik:

mkdir Latihan1

(catatan:  “C:\Users\ADMIN” root penulis dan sobat bisa berbeda-beda )


c. Pindah ke direktori latihan1 yang telah dibuat sebelumnya, dengan cara ketik command dibawah ini lalu enter.

cd latihan1


d. Buka Text Editor apa saja untuk membuat script server, disini saya pakai notepad, Klik Start > Klik Notepad
 

Tampilan Notepad


e. Setelah Notepad tampil ketik script dibawah ini:

var http = require("http");

http.createServer(function (request, response) {

   // Send the HTTP header
   // HTTP Status: 200 : OK
   // Content Type: text/plain

   response.writeHead(200, {'Content-Type': 'text/plain'});

   // Send the response body as "Hello World"
   response.end('Hello World\n');
}).listen(3000);


// Console will print the message
console.log('Server running at http://127.0.0.1:3000/');

Jadinya seperti ini:


f. Kemudian pilih file > save as  dengan nama file name server.js (tambah ekstensi "js")
-Save as type All Files
-terus Save As



g. Kemudian cek file server.js yang telah dibuat di folder Latihan1, hasilnya ada file server dengan type JScript. jika tidak ada ulangi step sebelumnya,

  
h. kembali ke aplikasi Node.js command prompt


Jalankan server dengan cara ketik lalu enter.

node server 



 hasilnya, tanpak log server running:


i. Finish, buka browser yang biasa sobat pakai, di url ketik:

http://127.0.0.1:3000

hasilnya seperti ini, “Hello world”  yang menandakan server berhasil.

Server akan terus dengan status listening, hingga kita stop server, caranya tekan bersamaan: ctrl c


Status server off


Kita telah berhasil membuat server denga Node js dan menjalankan melalui browser, server yang dibangun menggunakan modul http disebut server pure node js, untuk memudahkan pembuatan server di internet banyak platform yang menawarkan kemudahan pembuatan server seperti express. Semoga artikel dan tutorial sederhana ini bisa menambah wawasan kita. Salam :) 


Ref:
www.tutorialspoint.com
https://nodejs.org/en/