03.08. Modules

Projelerimiz genelde birden fazla dosyadan oluşacak, ES6 bu dosyaları ve bu dosyalar içindeki modülleri bir dosya üzerinden kullanmak için import ve modül oluşturmak için export kullanılır. Bu bölümde Node.js üzerinde import ve export ifadeleri üzerinedir.

Bir dosyayı kullanmak için bağlama işlemi programlama dillerinde olmazsa olmaz bir işlemdir. Örneğin, C’de include ile dosyamızı bağlıyorduk. Ancak dosyamız çok büyük olabilir ve dosya içinde sadece belli kısımlara ihtiyacımız olabilir. Javascript’te gerekli kısımlar modül olarak döndürülür ve kullanılabilir.

Bir tarayıcı üzerinde import işlemi “strict mode” çalışır. “Strict mode” Javascript’in esnek yapısını biraz daha zorunlu hale dönüştürür. Tarayıcı üzerinde modül kullanmak için script etiketine  type=”module” özelliği eklenir. Ancak, Node.js kullandığımız için tarayıcıdan farklı olarak bazı ayarlar yapmamız gerekiyor.

Node.js üzerinde modülleri kullanmak için node.exe ile yorumlama işlemine –experimental-modules eklemesi yapılmalıdır. Ayrıca, dosya uzantılarımız .mjs olmalıdır. Dosyamızı yorumlatmak için terminale aşağıdaki komutu yazmalıyız.

Terminal, dizin yerinin “uygulamaIsmi.mjs” dosyası ile aynı yerde olduğuna dikkat edin.

Export

Yazdığımız kodları diğer dosyalardan modül olarak kullanmak için “export” ifadesi kullanılır. Bir sınıf, fonksiyon veya değişkeni export ederek import için uygun hale getirebiliriz. Örnek olarak math.mjs adında bir dosya oluşturalım:

Her export işlemini bir modül gibi düşünebiliriz. Teker teker export yerine tüm kodlarımızı yazıp istediğimiz sınıf, fonksiyon ve değişkenleri export edebiliriz. Örneğin,

Görüldüğü gibi 3 farklı const ifadesi yazılmış ve export ifadesi ile modül haline getirilmiştir. Ayrıca, ilk iki const ifadesi yukarıdaki örnekteki klasik fonksiyondan farklı olarak arrow fonksiyon özelliği ile yazılmıştır. Şimdi bu dosyayı bir dosyamıza bağlayalım.

Import

İlk olarak tüm export ile hazırlanmış tüm modülleri bağlayalım. Bunun için öncelikle .mjs uzantılı bir dosya bir dosya oluşturalım.

from kısmından sonra “./” kök klasör olduğunu ve daha sonrasında math.mjs uzantılı dosyanın “math” yazılması yeterlidir. * bu dosyadaki tüm modülleri işaret eder. as ifadesi modülleri bir takma ad üzerinden kullanmamıza olarak sağlar. Burada, pi ve topla modülleri çağrılmıştır. Dosyayı çalıştırmak için:

Ancak * tüm modülleri yükler. Ancak, programımızda sadece belli modüllere ihtiyacımız olabilir. Bu durumda,

{…} arasına istenilen modüller eklenir. Kullanım sırasında modül ismi direkt kullanılabilir. Özellikle uygulamalarınıza yük getirmemek için bu kullanım şeklini kullanmanızı öneririm.

Kaynak: