MODULARIZATION NODEJS

Modularization

Semakin kompleks program yang dikembangkan, semakin rumit kodenya. Kode akan sangat sulit untuk dibaca dan dipelihara jika ditulis dalam satu berkas. Idealnya, hanya satu berkas JavaScript memiliki satu tugas. Jika ada lebih dari satu, kita harus mengenal modularisasi.

Modularisasi adalah teknik pemrograman yang membagi kode menjadi modul-modul yang berbeda yang dapat digunakan satu sama lain untuk membuat program yang kompleks. Membagi kode menjadi modul-modul ini membuat organisir kode JavaScript lebih mudah.

Setiap berkas JavaScript di Node.js adalah modul. Kita dapat membagi nilai variabel, objek, class, atau apa pun itu antar modul, tetapi kita harus mengekspor nilai pada modul tersebut sebelum melakukannya.

Untuk mengekspornya, simpanlah nilai tersebut pada properti module.exports. Contoh seperti ini:

const coffee = {
    name: 'Tubruk',
    price: 15000,
}
 
 
module.exports = coffee;

Setelah itu nilai coffee dapat digunakan pada berkas JavaScript lain dengan cara mengimpor nilainya melalui fungsi global require().

const coffee = require('./coffee');
 
console.log(coffee);
 
/**
 * node app.js
 *
 * output:
 * { name: 'Tubruk', price: 15000 }
 */

Perhatikan nilai parameter yang diberikan pada require(). Parameter merupakan lokasi dari module target impor. Ingat! Jika kita hendak mengimpor modul lokal (local module), selalu gunakan tanda ./ di awal alamatnya ya.

Bila berkas coffee.js diletakkan di folder yang berbeda dengan app.js, contohnya memiliki struktur seperti ini:

root folder:.
├── app.js
├── package.json
└── lib
    └── coffee.js

Maka kita perlu mengimpornya dengan alamat:

const coffee = require('./lib/coffee');

Kita juga bisa menggunakan tanda ../ untuk keluar dari satu level folder. Ini berguna bila ingin mengimpor module yang berbeda hirarki seperti ini:

const coffee = require('../lib/coffee');

Bila kita menggunakan VSCode, kita akan terbantu dengan fitur auto import yang disediakan. Melalui fitur tersebut kita tidak perlu repot-repot menuliskan alamat modul secara manual. Tinggal tulis saja nilai yang kita ingin impor, VSCode akan menangani penulisan fungsi require().

Dalam melakukan impor dan ekspor nilai, kita bisa memanfaatkan object literal dan object destructuring agar dapat mengimpor dan mengekspor lebih dari satu nilai pada sebuah modul. Contoh:

const firstName = 'Harry';
const lastName = 'Potter';
 
 
/* gunakan object literal
untuk mengekspor lebih dari satu nilai. */
module.exports = { firstName, lastName };

/**
* Gunakan object destructuring untuk mengimpor lebih dari satu nilai pada modul.
*/
const { firstName, lastName } = require('./user');
 
 
console.log(firstName);
console.log(lastName);
 
 
/**
* output:
* Harry
* Potter
*/

Untuk memudahkan developer dalam proses pengembangan, Node.js menyediakan beberapa modul bawaan yang dapat kita manfaatkan guna mendukung efisiensi untuk melakukan hal-hal yang umum. Modul bawaan tersebut dikenal sebagai core modules. Kita bisa mengimpor core modules dengan fungsi yang sama, yakni require().

// Mengimpor core module http
const http = require('http'); 

Lokasi core module dituliskan tidak seperti local module. Lokasi bersifat mutlak (core module disimpan folder lib pada lokasi Node.js dipasang) sehingga kita cukup menuliskan nama modulnya saja.

Ada 3 jenis modul pada Node.js, kita sudah mengetahui dua di antaranya. Berikut rinciannya:
    1. local module : module yang dibuat secara lokal berlokasi pada Node.js project kita.

    2. core module : module bawaan Node.js berlokasi di folder lib di mana Node.js terpasang pada
                                komputer kita. Core module dapat digunakan di mana saja.

    3. third party module : module yang dipasang melalui Node Package Manager. Bila third party
                                            module dipasang secara lokal, maka modul akan disimpan pada folder
                                            node_modules di Node.js project kita. Bila dipasang secara global, ia akan
                                            disimpan pada folder node_modules di lokasi Node.js dipasang.


Itulah tadi pembahasan mengenai modularisasi. Pada materi selanjutnya kita akan berkenalan dengan third party module dan Node Package Manager.

Latihan: Modularization

Sekarang kita sudah tahu bagaimana cara menerapkan modularisasi pada JavaScript. Namun rasanya tidak afdal bila kita tidak mempraktikannya sendiri. Untuk menguji tentang modularisasi, silakan lakukan latihan berikut.

Buat folder baru dengan nama modularization pada proyek nodejs-basic dan di dalamnya buat tiga berkas JavaScript baru yakni Tiger.js, Wolf.js, dan index.js.



Di dalam masing-masing berkas JavaScript, tuliskan starter code berikut: 

class Tiger {
  constructor() {
    this.strength = Math.floor(Math.random() * 100);
  }
 
  growl() {
    console.log('grrrrr!')
  }
}
 
// TODO 1

class Wolf {
  constructor() {
    this.strength = Math.floor(Math.random() * 100);
  }
 
  howl() {
    console.log('owooooo!')
  }
}
 
// TODO 2

const Tiger = // TODO 3
const Wolf = // TODO 4
 
const fighting = (tiger, wolf) => {
  if(tiger.strength > wolf.strength) {
    tiger.growl();
    return;
  }
 
  if(wolf.strength > tiger.strength) {
    wolf.howl();
    return;
  }
 
  console.log('Tiger and Wolf have same strength');
}
 
const tiger = new Tiger();
const wolf = new Wolf();
 
fighting(tiger, wolf);


Selesaikan kode yang ditandai TODO dengan ketentuan berikut:
    1. TODO 1 : Ekspor class Tiger agar dapat digunakan pada berkas JavaScript lain.

    2. TODO 2 : Ekspor class Wolf agar dapat digunakan pada berkas JavaScript lain.

    3. TODO 3 : Import class Tiger dari berkas Tiger.js.

    4. TODO 4 : Import class Wolf dari berkas Wolf.js.


Setelah selesai mengerjakan TODO, eksekusi berkas index.js dengan perintah:

node ./modularization/index.js


Maka console akan menghasilkan output seperti ini:



Posting Komentar

0 Komentar