CommonJS ve ES Modules Karşılaştırması
- 9
- (1)
- (5)
- 25 Oca 2025
JavaScript dünyasında modülerlik, kodun yeniden kullanılabilirliğini ve sürdürülebilirliğini artıran önemli bir özelliktir. Node.js'te iki temel modül sistemi bulunmaktadır: CommonJS (CJS) ve ES Modules (ESM). CommonJS, Node.js'in varsayılan modül sistemidir, ES Modules ise modern JavaScript standardına uygun olarak geliştirilmiştir. Bu makalede, CommonJS ve ES Modules arasındaki farkları inceleyeceğiz.
CommonJS Nedir?
CommonJS, Node.js'in varsayılan modül sistemidir ve senkron olarak çalışır. CommonJS, modülleri içe aktarmak için require()
fonksiyonunu ve dışa aktarmak için module.exports
veya exports
nesnesini kullanır.
CommonJS Örnek:
math.js
Dosyası:
function toplama(a, b) {
return a + b;
}
module.exports = { toplama };
app.js
Dosyası:
const math = require('./math');
console.log(math.toplama(5, 3));
CommonJS'in Avantajları:
- Node.js projelerinde yaygın olarak kullanılır ve desteklenir.
- Eşzamanlı çalışması sayesinde dosya okuma gibi işlemler için uygundur.
- Karmaşık bağımlılık zincirlerinde kolay entegrasyon sağlar.
CommonJS'in Dezavantajları:
- Senkron çalıştığı için tarayıcı ortamında doğrudan kullanılamaz.
- ES6 modüllerine kıyasla daha az esnek ve standart dışıdır.
ES Modules (ESM) Nedir?
ES Modules, modern JavaScript'in modüler yapısını sağlar ve import ile içe aktarma, export ile dışa aktarma işlemlerini destekler. ES Modules, asenkron çalışır ve tarayıcı dostudur.
ES Modules Örnek:
math.mjs
Dosyası:
export function toplama(a, b) {
return a + b;
}
app.mjs
Dosyası:
import { toplama } from './math.mjs';
console.log(toplama(5, 3));
ES Modules'in Avantajları:
- Asenkron çalıştığı için performans avantajı sağlar.
- Tarayıcı ortamında doğrudan kullanılabilir.
- Standartlara uygun modern bir yapıdır.
ES Modules'in Dezavantajları:
- CommonJS modülleriyle uyumsuzluk yaşayabilir.
- Eski Node.js sürümlerinde desteklenmez.
CommonJS ve ES Modules Karşılaştırması
Özellik | CommonJS (CJS) | ES Modules (ESM) |
---|---|---|
Kullanım Yeri | Sunucu tarafı (Node.js) | Sunucu ve tarayıcı tarafı |
Çalışma Şekli | Asenkron | Evet |
Yükleme Yapısı | require() |
import |
Dışa Aktarım | module.exports / exports |
export |
Performans | Daha yavaş | Daha hızlı |
Standardizasyon | Standart dışı | ECMAScript standardı |
Hangi Modül Sistemi Seçilmeli?
- CommonJS: Eğer mevcut bir Node.js uygulaması üzerinde çalışıyorsanız ve proje CommonJS kullanıyorsa bu sisteme devam edebilirsiniz.
- ES Modules: Yeni bir proje başlatıyorsanız ve modern tarayıcı uyumluluğu gereksiniminiz varsa ES Modules kullanmanız önerilir.
Node.js'te ES Modules kullanmak için package.json dosyanıza aşağıdaki ayarı eklemeniz gerekmektedir:
{
"type": "module"
}
Bu ayar sayesinde .js
uzantılı dosyalarda da ES Modules kullanabilirsiniz.
CommonJS ve ES Modules, Node.js ve JavaScript projelerinde kullanılan iki temel modül sistemidir. CommonJS daha geleneksel ve yaygın olarak kullanılırken, ES Modules modern ve standart bir yaklaşım sunmaktadır. Projenizin gereksinimlerine göre uygun olan modül sistemini seçebilirsiniz.
İlişkili İçerikler
Node.js, modüler bir yapıya sahiptir ve uygulamaları daha düzenli ve yönetilebilir hale getirmek için modül sistemini kullanır.