Tutorial NodeJs | Berkenalan Dengan NodeJs

NodeJs adalah cross-platform JavaScript runtime yang memberi kemampuan untuk menjalankan JavaScript di server. NodeJs dikembangkan oleh Ryan Dahl dan tahun 2009 mengeluarkan versi pertamanya. Dan sekarang versi 18 sedang aktif dikembangkan. Dengan adanya NodeJs programmer website tidak perlu lagi belajar bahasa pemograman server side lainnya, cukup dengan JavaScript. Tutorial ini akan menjelaskan mulai dari cara install NodeJs, membuat dan menggunakan module sampai dengan membuat aplikasi web server sederhana. Tutorial NodeJs ini juga dilengkapi dengan video tutorial yang bisa diakses di channel Youtube MyPHPtutorials.

Video Tutorial NodeJs | Berkenalan dengan NodeJs

Video Tutorial NodeJs | Berkenalan dengan NodeJs

Install NodeJs

Pertama tama kita perlu mendownload NodeJs, silahkan kunjungin https://nodejs.dev/download untuk mendownload NodeJs sesuai versi yang diinginkan. Setelah itu tinggal klik dua kali file yang sudah didownload tadi dan ikuti pentunjuk instalasi yang diberikan. Cara instalasinya cukup sederhana, Anda bisa melihatnya di video tutorial. Setelah selesai akan terdapat dua fungsi command line di Terminal (atau PowerShell di Windows), yaitu node dan npm. NPM adalah NodeJs Package Manager yang memiliki fungsi utama untuk mendownload dan mengelola dependency dari aplikasi kalian.

Menggunakan NodeJS

Menggunakan NodeJs sangat sederhana. Cukup jalanan command line node nama-file.js. Sebagai contoh untuk menjalankan file index.js dengan kode JavaScript di bawah cukup ketik node index.js di terminal atau PowerShell.

console.log('Hello World');

Maka outputnya akan Hello World. Kita juga bisa membuat kode JavaScript lainnya seperti membuat fungsi

function tambah(a, b) {
    return a + b;
}

console.log('1 + 2 = ' + tambah(1, 2));

Setelah dijalankan maka hasilnya akan 1 + 2 = 3.

Menggunakan Module NodeJs

NodeJs memiliki banyak module bawaan yang bisa dilihat selengkapnya di halaman dokumantasi NodeJs. Salah satu module itu adalah path. Untuk mengunakan module kita menggunakan kata kunci require seperti di bawah.

const path = require('path');
console.log('Delimiter = ' + path.delimiter);
console.log('Folder = ' + path.dirname('/path/to/index.js'));

Hasil dari kode di atas adalah

Delimiter = :
Folder = /path/to

Membuat Module NodeJs

Untuk membuat module di NodeJs juga sangat sederhana yaitu menggunakan kata kunci exports atau module.exports di dalam sebuah file Javascript. Ada dua cara untuk membuat module, misalnya kita memiliki file library.js.

Cara Pertama Menggunakan module.exports

Jika kalian ingin meng-export satu fungsi atau object saja di file tertentu, misalnya:

function tambah(a, b) {
    return a + b;
}

module.exports = tambah;

Untuk menggunakan module-nya sama seperti contoh module bawaan di atas

const tambah = require('./library');

console.log('1 + 2 = ' + tambah(1, 2));

Cara Kedua Menggunakan exports

Jika kalian ingin meng-export lebih dari satu fungsi atau object seperti:

function tambah(a, b) {
    return a + b;
}

function kurang(a, b) {
    return a - b;
}

exports.tambah = tambah;
exports.kurang = kurang;

Cara menggunakannya adalah seperti di bawah

const library = require('./library');

console.log('1 + 2 = ' + library.tambah(1, 2));
console.log('2 - 1 = ' + library.kurang(2, 1));

Membuat Package atau Aplikasi NodeJs dengan npm

Sebuah package adalah file atau folder yang dideskripsikan oleh sebuah file package.json. Sebuah package harus memiliki sebuah file package.json agar bisa dipublikasikan ke registry npm. Untuk membuat package dengan npm kita cukup menjalankan command line npm init di folder aplikasi yang sedang kita buat. Kemudian beberapa pertanyaan di bawah akan muncul

package name: (nodejs1) nodejs-app
version: (1.0.0) 0.1.0
description: Belajar NodeJs
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) MIT
About to write to package.json:

{
  "name": "nodejs-app",
  "version": "0.1.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "MIT"
}

Is this OK? (yes) 

Masukkan informasi yang diperlukan dan tekan enter untuk menjawab pertanyaan berikutnya. Sebagai hasilnya akan terbentuk file package.json.

Menggunakan Package Publik NodeJs

Banyak developer yang mempublikasikan package mereka dan dapat digunakan di aplikasi NodeJs kita, seperti lodash. Untuk menggunakannya kita menjalankan comment npm install <nama package>, seperti: npm install lodash. Package ini kemudian akan dicatat dalam file package.json. Untuk menggunakannya sama seperti menggunakan module seperti di bawah.

const _ = require('lodash');
console.log(_.join([1, 2, 3, 4], ', '));

Membuat Aplikasi Web Server NodeJs Sederhana

Untuk membuat sebuah web server di NodeJs bisa menggunakan module bawaan http. Di bawah adalah contoh sederhana yang menampilkan hello world.

const http = require('http');
const port = 3000;

const server = http.createServer(function (req, res) {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World');
});

server.listen(port, function () {
    console.log('Server berjalan di port ' + port);
});

Setelah dijalankan dan membuka halaman http://localhost:3000 di browser akan muncul text Hello World.

Konsep Callback dan Asynchronous di NodeJs

Callback adalah padanan dari asynchronous untuk sebuah fungsi. Dimana callback akan dipanggil setelah sebuah tugas selesai. NodeJs memberikan asynchronous atau non-blocking, yang mana semua fungsi dari module bawaan node menerima callback. Untuk demonstrasi misalnya module File System atau fs memiliki fungsi asynchronous dan juga non-asynchronous atau blocking.

Kode Non-asynchronous atau Blocking

Di bawah adalah contoh dari penggunakan module fs untuk membaca file input.txt yang berisi tulisan hello world.

const fs = require('fs');
const data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("Akhir");

Pada saat dijalankan fungsi fs.readFileSync akan memblokir eksekusi baris selanjutnya sampai selesai membaca file test.txt. Sehingga output dari kode di atas adalah

hello world
Akhir

Kode Asynchronous atau Non-Blocking

Sedangkan contoh di bawah adalah non-blocking karena menggunakan callback.

const fs = require('fs');
const data = fs.readFile('input.txt', function (err, data) {
    if (err) {
        return console.log(err);
    }

    console.log(data.toString());
});

console.log("Akhir");

Callback dari fungsi fs.readFile akan dijalankan setelah selesai membaca file dan tidak memblokir baris berikutnya sehingga hasil dari kode di atas adalah

Akhir
hello world

Dengan menggunakan module fs kita juga bisa meningkatkan aplikasi web server kita untuk memberikan hasil berupa file html seperti di bawah

const http = require('http');
const fs = require('fs');
const port = 3000;

const server = http.createServer(function (req, res) {
    fs.readFile('index.html', function (err, data) {
        if (err) {
            res.statusCode = 500;
            res.setHeader('Content-Type', 'text/html');
            res.end(err.message);
            return;
        }

        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/html');
        res.end(data);
    })
});

server.listen(port, function () {
    console.log('Server berjalan di port ' + port);
});