Asas Node.js – Import/export module
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 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)
}
Ulasan
Catat Ulasan