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.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!