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.

Paylaşın
Etiket Bulutu