Asas Node.js - Import/export module

Salam. Aku nak share sikit tentang asas nodejs. Disclaimer kat sini, aku tak nak cakap pasal asas-asas macam variable sebab semuanya sama ja dengan asas javascript. Aku jugak tak akan cakap tentang cara nak install nodejs. Kalau nak download sila klik download Nodejs.

Macam tajuk kat atas, aku just nak cerita tentang import & export module di environment Node.js. Orait, misal kata kita ada 1 projek namanya belajar-nodejs. Di dalam folder projek ini ada 2 file; index.js & logger.js

  • belajar-nodejs
    • index.js
    • logger.js
// index.js

// TODO: implement log function from logger.js


// logger.js

function log(text){
    console.log(text)
}

Misalnya kita hendak menggunakan function logger yang ditulis di file logger.js di index.js, kita tidak boleh terus panggil function log terus dari logger.js kerana, didalam Nodejs, Setiap file memiliki scope mereka sendiri. Jadi disebabkan itu segalanya yang index.js tidak dapat akses isi yang dimiliki oleh logger.js. Untuk menyelesaikana masalah ini, kita perlu export isi-isi logger.js & import ke index.js.

Contohnya:

// logger.js

function log(text){
    console.log(text)
}

module.exports.logger = log; // export function log

// index.js

const logger = require('./logger'); // import object dari logger.js

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


Penerangan:

Setiap file di Nodejs adalah sebuah module. Jadi untuk projek kita, kita ada 2 module; module index & module logger. Module tidak berhubung sesama sendiri. Scope untuk setiap module adalah untuk module itu sendiri. Secara teknikalnya setiap module miliki module function wrapper tersendiri. Function ini milik argument yan terbahagi kepada 5:

  • exports
  • require
  • module
  • __filename
  • __dirname

Lihat index.js, kita memanggil function require('./logger') untuk import isi-isi logger.js. Lihat pula logger.js kita ada module.exports.logger = log. module.exports secara defaultnya akan return objek kosong {} Jadi untuk export function logger kita, tambahkan key logger dan value log sebagai properties object yang direturn oleh module.exports. exports pula adalah singkatan atau copy dari module.exports. Untuk mudah, kita juga boleh gunakan syntax ini exports.logger = log. lebih singkat kan?

Untuk __filename & __dirname pula jika di console.log() masing-masing akan memberikan info: /path/to/belajar-nodejs/index.js & /path/to/belajar-nodejs.