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
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 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
.
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
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));
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
.
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], ', '));
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
.
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);
});