ECMAScript - Module.exports ve Require Komutları - Yazılım Mimarileri ve Tasarım Desenleri Üzerine

ECMAScript – Module.exports ve Require Komutları

Merhaba,

Bu içeriğimizde ECMAScript’te modüller arası member iletişimini sağlayan “module.exports” ile “require” komutlarını inceliyor olacağız.

Diyelim ki, elimizde aşağıdaki gibi bir modülümüz olsun.

--- module.js ---
const method1 = () => {
    console.log("method1");
};
const method2 = () => {
    console.log("method2");
};
const variable = 3;

Bu modül içerisindeki “method1”, “method2” ve “variable” elemanlarını farklı bir sınıf, modül ya da kod sayfasında kullanmak istiyorsak eğer öncelikle modül içerisinde başka kaynaktan erişilmesini istediğim elemanları export etmemiz gerekmektedir. Bu işlem içinde;

--- module.js ---
module.exports.method1 = method1;
module.exports.method2 = method2;
module.exports.variable = variable;

şeklinde çalışmamız yeterli olacaktır.

Şimdi bir başka modülden bu kaynağa erişmek için öncelikle bu kaynakta export edilen memberları diğer kaynaktan require etmemiz gerekmektedir.

--- index.js ---
let method1 = require("./module").method1;
let method2 = require("./module").method2;
let variable = require("./module").variable;

Bu işlemden sonra require değerlerini atadığımız değişkenler ilgili memberın yapısal özelliğine bürünecektirler. Yani “method1” ve “method2” fonksiyon özelliği gösterirken, “variable” değişken özelliği gösterecektir. Dolayısıyla kullanımlarıda yapısal özelliklerinin gerektirdiği şekilde olacaktır.

--- index.js ---
method1();
method2();
console.log(variable);

Tabi require işlemini yaparken Destructuring özelliğinide kullanabilmekteyiz.

let { method1, method2, variable } = require("./module");

method1();
method2();
console.log(variable);

Bu noktadan itibaren ECMAScript ile farklı modüller arasında iletişimin nasıl sağlandığını ve memberların nasıl erişilebilir olduğunu incelemiş olduk.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar dilerim…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.