Ana içeriğe geç
Modül 8 · Ders 1 ders 4Kurstaki 29/32~12 min
Modül dersleri (1/4)

ESM modülleri: içe / dışa aktarma

Bir program büyüdüğünde her şeyi tek bir dosyada tutmak zorlaşır. Modern JavaScript ES modülleri (ESM) ile sorunu çözer: her dosya dışa aktarılabilen bir modüldür işlevler, sabitler, sınıflar ve diğer dosyalar bunları içe aktarabilir.

export

Herkese açık hale getirmek istediğiniz şeyi dışa aktarırsınız. İki form:

JS
// somma.js
export function somma(a, b) {
  return a + b;
}

export const PI = 3.14159;

Veya dosyanın sonunda:

JS
function somma(a, b) {
  return a + b;
}
const PI = 3.14159;
export { somma, PI };

import

Başka bir dosyadan:

JS
// app.js
import { somma, PI } from './somma.js';

console.log(somma(1, 2)); // 3
console.log(PI); // 3.14159

{ somma, PI } nesnesi içe aktarmak istediğiniz adların listesidir. Eşleşmeleri gerekir ihraç edilen isimler

Varsayılan dışa aktarma

Her modül, adsız bir "ana" dışa aktarıma sahip olabilir:

JS
// log.js
export default function log(msg) {
  console.log('[app]', msg);
}

Yerel olarak adı seçerek içe aktarırsınız:

JS
import log from './log.js';
log('ciao');

Yeniden adlandırma

JS
import { somma as plus } from './somma.js';
export { somma as add } from './somma.js'; // re-export

Dosya başına bir "ad alanı"

Modüller yalıtılmıştır: bir dosyada bildirilen değişken genel kapsamda yer almaz. sen Başka bir yerde görünür hale getirmek için açıkça dışa aktarmanız gerekir. Bu çok büyük bir gelişme her <script>'nin window paylaştığı eski tarz JS.

Deneyin

Aşağıdaki alıştırmalarda gerçek import/export söz dizimini yazmayacaksınız — korumalı alan tek bir dosya. Bunun yerine, kodu küçük ayrı işlevler halinde düzenlemenizi isteyeceğiz. sanki her biri farklı bir dosyadaymış gibi işbirliği yapın.

Egzersiz#js.m8.l1.e1
Denemeler: 0Yükleniyor…

İki ayrı işlev tanımlayın: 'kare(n)' (n*n'yi döndürür) ve kareyi kullanan 'sumOfSquares(a, b)'. Kareyi bir dosyadan 'dışa aktarılan' ve sumOfSquares tarafından yeniden kullanılan bir şey olarak düşünün.

Düzenleyici yükleniyor…
İpucu göster

sumOfSquares(a,b) = kare(a) + kare(b)

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#js.m8.l1.e2
Denemeler: 0Yükleniyor…

Bir dizideki çift öğeleri saymak için isEven'ı kullanan `isEven(n)` (n çift ise doğrudur) ve `countEven(arr)'ı tanımlayın. Bunları iki ayrı fonksiyon olarak tutun.

Düzenleyici yükleniyor…
İpucu göster

arr.filter(isEven).length

3 denemeden sonra çözüm mevcut