Node.js module.exports
Yazıda Node.js ile modül yazmak için kullanılan module.exports ve exports anahtar kelimeleri ile ilgili bilgiler yer almaktadır.
module.exports ve exports anahtar kelimesi her Node.js dosyası içerisinde kullanılabilen global bir nesnedir.
Node.js ile herhangi bir nesne, fonksiyon, değişken tanımladıktan sonra module.exports veya exports anahtar kelimelesini kullanarak diğer dosyalarda da yazılan kodların kullanımını sağlayabiliriz.
Değişken ihraç etmek
Modül yazmak için kullanılan exports bir nesne olduğundan exports nesnesine tanımlanan her şey diğer dosyalarda da kullanılabilir.
Aşağıda mesaj.js modülü içerisine yazılan Merhaba Node.js metin veri türü olarak ihraç edilir.
'use strict';
module.exports = 'Merhaba Node.js';
//exports = 'Merhaba Node.js';
Modülü kaydettiğiniz yere aşağıdaki kodları kaydedin ve çalıştırın.
'use strict';
const mesaj = require('./mesaj');
console.log(mesaj);
Yazılan kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.
node index.js
Merhaba Node.js
Özellik ihraç etmek
exports anahtar kelimesinin veri türü nesne olduğundan exports nesnesine çeşitli özellik ekleyebiliriz.
Aşağıda mesaj.js modülü içerisine yazılan merhaba özelliği exports nesnesine ait özellik olarak ihraç edilir.
'use strict';
exports.merhaba = 'Merhaba Node.js';
//module.exports.merhaba= 'Merhaba Node.js';
Modülü kaydettiğiniz yere aşağıdaki kodları kaydedin ve çalıştırın.
'use strict';
const mesaj = require('./mesaj');
console.log(mesaj);
Yazılan kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.
node index.js
{ merhaba: 'Merhaba Node.js' }
Modül require fonksiyonu ile { merhaba: ‘Merhaba Node.js’ } nesnesini döndürür ve mesaj değişkenine atar.
Nesne içerisindeki merhaba özelliğine mesaj.merhaba ile ulaşılır.
Metot ihraç etmek
exports anahtar kelimesinin veri türü nesne olduğundan exports nesnesine çeşitli metotlar ekleyebiliriz.
Aşağıda mesaj.js modülü içerisine yazılan yazdir fonksiyonu exports nesnesine ait metot olarak ihraç edilir.
'use strict';
exports.yazdir = function (mesaj) {
console.log(mesaj)
}
//module.exports.yazdir = function (mesaj) {
// console.log(mesaj)
//}
Modülü kaydettiğiniz yere aşağıdaki kodları kaydedin ve çalıştırın.
'use strict';
const mesaj = require('./mesaj');
mesaj.yazdir('Merhaba Node.js');
Yazılan kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.
node index.js
Merhaba Node.js
Nesne ihraç etmek
exports anahtar kelimesinin veri türü nesne olduğundan exports nesnesine çeşitli özellikler ekleyebiliriz.
Aşağıda kisi.js modülü içerisine yazılan özellikler exports nesnesine ait özellik olarak ihraç edilir.
'use strict';
exports.adi = 'Yusuf';
exports.soyAdi = 'SEZER';
//module.exports = {
// adi: 'Yusuf',
// soyAdi: 'SEZER'
//}
Modülü kaydettiğiniz yere aşağıdaki kodları kaydedin ve çalıştırın.
'use strict';
const kisi = require('./kisi');
console.log(kisi.adi + ' ' + kisi.soyAdi);
Yazılan kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.
node index.js
Yusuf SEZER
Sınıf ihraç etmek
JavaScript’te fonksiyonlar sınıf kurucusu gibi değerlendirilir.
'use strict';
module.exports = function (adi, soyadi) {
this._adi = adi;
this._soyadi = soyadi;
this.adiSoyadi = function () {
return this._adi + ' ' + this._soyadi;
}
}
Modülü kaydettiğiniz yere aşağıdaki kodları kaydedin ve çalıştırın.
'use strict';
const Kisi = require('./kisi');
let k1 = new Kisi('Yusuf', 'SEZER');
console.log(k1.adiSoyadi());
Yazılan kodlar çalıştırıldığında aşağıdaki gibi bir sonuç verecektir.
node index.js
Yusuf SEZER
Sınıfı ihraç edip projede new anahtar kelimesiyle sınıfın bir kopyasını oluşturduk.
Modülü klasörden yüklemek
Yazılan modüller birden fazla dosyadan oluşabilir veya daha düzenli bir şekilde saklamak için çeşitli klasörlere ayrılabilir.
Bir önceki sınıf ihraç etme örneğindeki modülü modul klasöründen çağırmak için aşağıdaki kodları kullanabiliriz.
'use strict';
const Kisi = require('./modul/kisi');
let k1 = new Kisi('Yusuf', 'SEZER');
console.log(k1.adiSoyadi());
Veya modül adını belirtmeden sadece modül klasörünü belirterek projeye dahil edebiliriz.
'use strict';
const Kisi = require('./modul');
let k1 = new Kisi('Yusuf', 'SEZER');
console.log(k1.adiSoyadi());
Sadece klasör adı yazıldığında Node.js klasör içerisinde package.json dosyasını arayacaktır.
Modül klasöründe bulunan package.json dosyasının yapısı aşağıdaki gibi olmalıdır.
{
"name": "kisi",
"main": "./kisi.js"
}
Eğer package.json dosyası yoksa varsayılan modül dosyası olarak index.js dosyasını arayacaktır.
Node.js Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.