Asas Node.js – Import/export module

<Tutorial >

Salam. Post ini telah di update pada 15/05/2021 atas sebab selepas setahun aku tulis post asal ini, aku tak faham satu apa yang aku merepek. Aku pun tak pasti kalau sesiapa yang baca post sebelum update ini faham.haha maaf. Jadi aku nak update lagi untuk pemahaman yang lebih mantap.

Pengenalan

Dalam Node.js setiap file node(javascript) di anggap sebagai module. Setiap module miliki skop tersendiri. Misalnya jika kita declare sesuatu, misalnya variable, di file app.js variable tersebut tidak akan dapat di akses oleh file(module) lain seperti di file logger.js. Jadi untuk akses variable dari module lain kita perlu lah import variable tersebut yang telah di export dari module-nya.

Misalnya kita ada 2 file:

- app.js
- logger.js

app.js

console.log(module)

kita run file app.js

node app.js

result:

Module {
  id: '',
  exports: {},
  parent: null,
  ...
}

Dapat dilihat di sini console.log(module) memberikan kita objek Module dengan property exports: {}.

Jadi jika kita mahu export sesuatu dari file/scope lain, perlulah kita export begini:

logger.js

function log(text){
    console.log(text)
}
const url = 'https://ceghap.com/';

module.exports.log = log;
module.exports.baseURL = url;

Disini kalau secara ringkasnya kita telah set/export objek logger yang mengandungi function log ke dalam objek exports (hah! pening kan? tengok kod dibawah untuk lebih jelas). Jika kita tambah kod console.log(module) dan jalankan node logger.js

Module {
  id: '',
  exports: {
   log : function(text){
       console.log(text)
   },
   baseURL : 'https://ceghap.com';
  }
}

Jadi sebab itu semasa kita import/required sesuatu module begini

app.js

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

logger.log('ini text yang menggunakan function log yang diimport dari logger.js');

console.log(logger.baseURL);

secara asasnya logger itu adalah

const logger = {
  log : function(text){
    console.log(text);
  },
  baseURL : 'https://ceghap.com'
}

Aku yakin kali ini lebih faham bukan? haha

Tambahan

Seperti yang kita lihat diatas, secara default, objek module mengandungi property exports yang juga sejenis objek.

Module {
 exports: {}
}

Tapi kita boleh overwrite property exports ini dari objek kepada jenis function atau lain-lain juga.

logger.js

function log(text){
    console.log(text)
}
module.exports = log;

Jadi jika kita tambah kod console.log(module)dan jalankan node logger.js

Module {
  id: '',
  exports: function(text){
       console.log(text)
  }
}

app.js

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

logger('ini text yang menggunakan function log yang diimport dari logger.js');

asasnya logger adalah function

const logger = function(text){
  console.log(text)
}
Belanja saya kopi

Artikel lain

Fahami React Context API

Sebagai developer reactjs yang baharu macam aku, aku selalu gunakan teknik prop drilling untuk pass prop ke child component yang aku buat. Cara ini tak bagus kalau projek kita itu adalah projek yang besar. Aku tahu mengenai kewujudan react context API atau state management library lain seperti redux, mobx, recoil dan banyak lagi library untuk… Continue reading Fahami React Context API

Asas Node.js – Built-in module

Dalam Node.js terdapat tidaklah terlalu banyak built-in module. Tapi aku tak akan bincangkan kesemua module tersebut. Aku hanya akan bincangkan beberapa built-in module yang agak penting & digunakan agak kerap ketika pembangunan aplikasi node.js. Antaranya adalah: Path module OS module File System Module Events Module HTTP Module Path module Digunakan untuk handle file path. Contohnya… Continue reading Asas Node.js – Built-in module