1.
2. ES Modülü (
3. CommonJS (
Karşılaştırma Tablosu
Kullanım Senaryoları
<script> etiketi- En eski yöntem.
srcözniteliğine dosya yolu verilir:
HTML:<script src="utils.js"></script> <script src="main.js"></script>- Dosyalar yükleme kolejinde çalıştırılır;
utils.jsönce yüklenip çalıştırılırsa, içinde tanımlanan fonksiyonlarmain.jsiçinde erişilebilir. - Tarayıcıya bağımlı; sunucu tarafında (Node) doğrudan çalışmaz.
- Asenkron veya senkron olma seçeneği var (
async,defer).
2. ES Modülü (
import / export)- Tarayıcı ve modern Node (12+ sürümler) destekler.
- Dosya uzantısı
.jsveya.mjsile belirtilir. - Örnek:
JavaScript:// utils.js export function add(a, b) { return a + b; } // main.js import { add } from './utils.js'; console.log(add(2, 3)); - Modülü tek bir kez yükler, sıralama ve döngü sorunu yoktur.
- Tarayıcıda
<script type="module">etiketi kullanılır. - Sunucu tarafında,
requireyerineimportkullanmak içintype: "module"yapılandırması gerekir.
3. CommonJS (
require / module.exports)- Node.js’in geleneksel modül sistemi.
- Dosya:
JavaScript:// utils.js module.exports = { add: (a, b) => a + b }; // main.js const { add } = require('./utils'); console.log(add(2, 3)); - Tarayıcıda çalışmaz; bundler (Webpack, Rollup) ile dönüşüm gerekir.
- Sıralama sorunu yok, her
requireçağrısı aynı instance döner.
Karşılaştırma Tablosu
| Özellik | <script> | ES Modül | CommonJS |
|---|---|---|---|
| Ortam | Tarayıcı | Tarayıcı / Node | Node |
| Yükleme | Sıralı | Asenkron (özellikle tarayıcıda) | Sıralı |
| Modül Bağımlılığı | Yok | Var (top-down) | Var (top‑down) |
| Değiştirilebilirlik | Kolay | export default vs. named | module.exports |
| Entegrasyon | Basit | Modern, tam destek | Gelişmiş, bundler gerekir |
Kullanım Senaryoları
- Hızlı prototip, tek sayfa:
<script>tagı yeterli. - Modüler uygulama (React, Vue, Angular): ES Modül tercih edilir.
- Sadece Node: CommonJS hâlihazırda çalışır, ancak projeler ilerledikçe ES Modül’e geçmek modern seçenektir.