# ES Modülleri (ECMAScript Modules)

Adres: https://softwaredictionary.org/tr/terimler/es-modules
Kategori: Web Geliştirme
Son güncelleme: 2026-10-05
İngilizcesi: ES Modules
Okunuşu: i-es mocuıls

Kısaca: ES modülleri, JavaScript'in yerleşik modül sistemidir: her dosya kendi kapsamını korur ve kodu diğer dosyalarla import ve export aracılığıyla paylaşır.

## ES modülleri (ES modules) nedir?

Modül, değişkenleri ve fonksiyonları export edilmedikçe kendine saklı kalan bir dosyadır. ES modüllerinde bir dosya paylaştığı şeyleri `export` ile işaretler, başka bir dosya da bu parçaları `import` ile alır. Standart, ES6 olarak da bilinen ECMAScript 2015 ile geldi ve bugün bütün modern tarayıcılar ve Node.js onu destekliyor.

ES modüllerinden önce JavaScript'in kendine ait bir modül sistemi yoktu. Tarayıcılar hepsi tek bir global kapsamı paylaşan script'ler yüklüyordu, Node.js ise `require()` ve `module.exports` ile CommonJS kullanıyordu. ES modülleri önemli bir noktada ayrılır: import ve export'lar statiktir, en üst düzeyde yazılır; böylece araçlar hiçbir şeyi çalıştırmadan bütün bağımlılık grafiğini görebilir. Bundler'ların kullanılmayan kodu atabilmesi, yani tree shaking, ve geri kalanı parçalara bölebilmesi bu sayededir.

Tarayıcıda bir script `<script type="module">` ile modül olur; modül script'leri ertelenerek çalışır ve her zaman strict mode'dadır. Node.js'te bir dosya `.mjs` ile bitiyorsa ya da en yakın `package.json` dosyasında `"type": "module"` yazıyorsa modüldür. Yalnızca gerektiğinde yüklenmesi gereken kod için `import()` fonksiyonu bir modülü istendiği anda yükler ve bir promise döndürür.

## Önemli noktalar

- ES modülleri kodu `export` ve `import` ile paylaşır, geri kalan her şeyi saklı tutar.
- Dilin standardının parçasıdır; tarayıcılarda ve Node.js'te çalışır.
- Statik import'lar araçların bağımlılık grafiğini görmesini ve böylece tree shaking yapmasını sağlar.
- `import()` bir modülü yalnızca gerektiğinde yükler.

## Örnek: Bir dosyadan export edip başka bir dosyaya import etmek

```javascript
// math.js
export const PI = 3.14159;
export function area(radius) {
  return PI * radius ** 2;
}

// app.js
import { area } from "./math.js";
console.log(area(2)); // 12.56636
```

## Sık sorulan sorular

**ES modülleri ile CommonJS arasındaki fark nedir?**

CommonJS, Node.js'in eski modül sistemidir: `require()` bir modülü kod çalışırken yükler, `module.exports` da değerleri paylaşır. ES modülleri `import` ve `export` kullanır, asenkron yüklenir ve kod çalışmadan önce analiz edilir. Node.js ikisini de destekler; yeni kodda genellikle ES modülleri kullanılır.

**Tarayıcı neden "Cannot use import statement outside a module" diyor?**

Dosya klasik bir script olarak yüklenmiş. `<script>` etiketine `type="module"` ekleyin; Node.js'te dosyayı `.mjs` uzantısıyla adlandırın ya da `package.json` içinde `"type": "module"` ayarlayın.

## Kaynaklar

- [ECMAScript Language Specification: Modules](https://tc39.es/ecma262/#sec-modules)
- [MDN: JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)
- [Node.js documentation: ECMAScript modules](https://nodejs.org/api/esm.html)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
