CommonJS vs ESM
- Node.js kursu
- Başlangıç
- Ders 5/116
- 5 dk
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
// greet fonksiyonunu ./selam.js'den içe aktar
// Sonra greet('Dünya') çağrısını yazdırÖrnek çözüm
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
CommonJS: const fs = ____("fs");
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 |