DEV Community

Cover image for Node.js require ve export kullanımları
Sinan Demir
Sinan Demir

Posted on

Node.js require ve export kullanımları

Node.js’de kullandığımız require ve module.exports ifadelerinin kullanım şekilleri başlarda tam anlaşılmayabiliyor. Bu yazımda elimden geldiğince bunları anlatmaya çalışacağım.

Dosyamızdaki fonksiyonları veya tanımlamaları başka bir dosyaya gönderebilmek için module.exports ifadesini, gönderilen dosyaları mevcut dosyaya dahil etmek için ise require ifadelerini kullanırız.

Bir ifadeyi export ile aktarmak

module.js dosyamızdaki kodlar

const f = () => {
    console.log('f fonksiyonu - module.js');
};
Enter fullscreen mode Exit fullscreen mode

Yukarıdaki f fonksiyonunu başka dosyalarda kullanmak için mevcut dosyadan module.exports, kullanacağımız sayfadan ise require ile dahil etmemiz gerekiyor.

Yukarıdaki cümleye göre hareket edersek f fonksiyonunu app.js sayfasında kullanmak için dosyanın sonuna module.exports = f yazmalıyız.
Bu ifade ile f fonksiyonumuzu export etmiş oluruz. Geriye sadece require ile çağırmak kalıyor.

app.js dosyamızdaki kodlar

const dahil = require('./module');
dahil(); // Çıktı: f fonksiyonu - module.js 
Enter fullscreen mode Exit fullscreen mode

require ifadesi ile module.js dosyamızdaki export edilen f fonksiyonunu app.js içine dahil ettik ve verdiğimiz ad ile kullanabildik. dahil yerine farklı bir ad da verebilirdik. Bu seçim tamamen bize kalıyor.

Birden fazla ifadeyi export ile aktarmak

Bu sefer f'in yanında bir Function Expression daha yani x fonksiyonu ve Number değer taşıyan bir değişkenimiz olsun.

module.js dosyamızdaki kodlar

const f = () => {
    console.log(' f fonksiyonu - module.js');
};
const x = () => {
    console.log(' x fonksiyonu - module.js');
};
const P = 3.14;
Enter fullscreen mode Exit fullscreen mode

Bu ifadeleri app.js dosyasında kullanmak için ise iki yöntemimiz var.

1. Yöntem

İlk yöntemde module.js dosyamıza şu şekilde export etmeliyiz.

module.exports.ffonk= f;
module.exports.xfonk= x;
module.exports.pi= P;
Enter fullscreen mode Exit fullscreen mode

Burada belirttiğimiz ffonk, xfonk ve pi tamamen bize bağlı bir isimlendirme. Bu isimleri require ile dahil ettiğimiz dosyada çağırmak için veriyoruz.
Bu şekilde export edince nasıl kullanacağız derseniz de;

app.js dosyamızdaki kodlar

const dahil = require('./module.js');
dahil.ffonk();
dahil.xfonk();
console.log(dahil.pi);
/* Çıktılar
f fonksiyonu - module.js
x fonksiyonu - module.js
3.14
*/
Enter fullscreen mode Exit fullscreen mode

2. Yöntem

İkinci yöntemde ise ilkine göre daha basit bir şekilde export etmek mümkün. Bunun için module.exports kodunu şu şekilde yazmalıyız.
module.exports = { f, x, P };

Bu şekilde export ettiğimizde app.js dosyasında şu şekilde kullanabiliriz.

const dahil = require('./module');
dahil.f();
dahil.x();
console.log(dahil.P);
Enter fullscreen mode Exit fullscreen mode

Bu kullanım ilkine göre daha yaygın ve kullanışlıdır. Bunun sebebi ise bu şekilde sadece işimize yarayan ifadeyi dahil edebiliriz. Bunu Object Destructuring ile yapabiliriz.
Örneğin const { f }= require('./module') şeklinde dahil edersek x ve P ifadelerini dahil etmeden f fonksiyonunu dahil etmiş oluruz.
İki tanesini dahil etmek istersek const { f, x }= require('./module') kodunu kullanabiliriz.

Object Destructuring yönteminin güzel bir özelliği ile birlikte dahil ettiğimiz ifadeye özel isim de verebiliriz. Örneğin f fonksiyonunu ve P ifadesini isimlendirelim ve çağıralım.

const { f: sinan, P: piSayisi } = require('./module');
sinan();
console.log(piSayisi);
/* Çıktılar
f fonksiyonu - module.js
3.14
*/
Enter fullscreen mode Exit fullscreen mode

İsimlendirme yaparak ilk yöntemin sağlamış olduğu özelliği bu şekilde ikinci yöntemde de kullanabiliyoruz.
Benim tercihim ikinci yöntem çünkü daha yaygın bir kullanıma sahip.

require ile dosyayı dahil ederken ./module ile ./module.js arasında bir fark bulunmuyor. Yukarıdaki örneklerde olduğu gibi iki türlü de kullanabilirsiniz.

Yazımı okuduğunuz için teşekkürler. Sonraki yazılardan haberdar olmak için beni aşağıdaki sosyal medya hesaplarımdan takip edebilirsiniz.

LinkedIn
Instagram
GitHub

Top comments (0)