CodeBlanks Logo Icon CodeBlanks

CommonJS vs ESM

CommonJS (require) ve ES modules farkını öğrenirsin.

CommonJS vs ESM

Node.js'te iki modül sistemi vardır: CommonJS (eski) ve ES modules (modern). Node.js 22'de ESM önerilir.

CommonJS'de dışa aktarma module.exports, içe aktarma require ile yapılır. ESM'de ise export ve import kullanılır.

Bir projede ikisini karıştırmak hataya yol açar; package.json içinde "type": "module" ile ESM seçilir. Eski kodlarda CommonJS görebilirsin ama yeni kodlarda ESM kullan.

Hangisini seçmeli?

Yeni proje başlatırken ESM seçmek önerilir. package.json içine "type": "module" eklersen tüm .js dosyaların ESM sayılır.

Eski bir projeyi bakım yapıyorsan ve o projede require kullanılıyorsa, CommonJS'de kalman tutarlılık açısından doğru olabilir. Yeni eklemelerde yine de ESM tercih et.

İki sistemi aynı dosyada kullanma; bu kafa karıştırır ve hataya yol açar.

Uygulama ESM modülünde import yaz

./selam.js dosyasından greet fonksiyonunu içe aktar. Sonra console.log ile greet('Dünya') çağrısının sonucunu yazdır.

Başlangıç kodu

index.js
// greet fonksiyonunu ./selam.js'den içe aktar
// Sonra greet('Dünya') çağrısını yazdır

Örnek çözüm

index.js
import { greet } from "./selam.js";

console.log(greet("Dünya"));

Beklenen çıktı

Merhaba, Dünya

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 require ile içe aktarma

Soru
CommonJS: const fs = ____("fs");
Cevap
CommonJS: const fs = require("fs");

Açıklama: CommonJS'de require kullanılır.

2 "type": "module" ne yapar?

  • Tüm .js dosyalarını siler
  • Yalnızca .mjs dosyalarını tanır
  • npm komutlarını devre dışı bırakır
  • Tüm .js dosyalarını ESM olarak işler Doğru cevap

Açıklama: type: module .js dosyalarını ESM olarak işler.

3 Modül sistemlerini eşleştir

Kavram Anlamı
require CommonJS içe aktarma
import ESM içe aktarma
module.exports CommonJS dışa aktarma
export ESM dışa aktarma

Başlangıç bölümündeki tüm dersler