import
Wczytuje wartości wyeksportowane z innego modułu ES: funkcje, klasy, stałe albo cały moduł.
Przykład
#// utils.js
export function formatPoints(points) {
return `${points} pkt`
}
// main.js
import { formatPoints } from './utils.js'
console.log(formatPoints(120))120 pkt
Definicja i zastosowanie
#Instrukcja import pobiera to, co inny plik udostępnił przez export. Dzięki modułom dzielisz kod na małe pliki z jasno określonym zadaniem, a każdy plik ma własny zasięg, więc zmienne nie zaśmiecają przestrzeni globalnej.
Eksporty nazwane importujesz w klamrach, pod tą samą nazwą (import { formatPoints } from "./utils.js"), opcjonalnie zmieniając ją przez as. Eksport domyślny importujesz bez klamer i pod dowolną nazwą. Zapis import * as utils zbiera wszystkie eksporty w jeden obiekt.
Deklaracje import muszą stać na najwyższym poziomie pliku, a importowane moduły wykonują się, zanim ruszy reszta kodu. Gdy moduł ma być wczytany dopiero w razie potrzeby, użyj funkcji import(), która zwraca obietnicę. W przeglądarce skrypt z instrukcjami import musi mieć atrybut type="module".
Składnia
#import defaultExport from './module.js'
import { name1, name2 as alias } from './module.js'
import defaultExport, { name } from './module.js'
import * as namespace from './module.js'
import './module.js'
const module = await import('./module.js')Więcej przykładów
#// student.js
export default class Student {
constructor(name) {
this.name = name
}
}
export const MAX_LEVEL = 50
// main.js
import Student, { MAX_LEVEL as limit } from './student.js'
const ola = new Student('Ola')
console.log(ola.name, limit)Ola 50
// math.js
export const add = (a, b) => a + b
export const multiply = (a, b) => a * b
// main.js
import * as math from './math.js'
console.log(math.add(2, 3))
console.log(math.multiply(4, 5))5 20
const button = document.querySelector('#stats')
button.addEventListener('click', async () => {
const { drawChart } = await import('./chart.js')
drawChart()
})Kod wykresu zostanie pobrany dopiero po kliknięciu. Strona ładuje się szybciej, bo nie ściąga od razu wszystkiego.
Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- W przeglądarce podawaj pełną ścieżkę z rozszerzeniem, np.
./utils.js. Zapis bez rozszerzenia działa zwykle tylko w narzędziach takich jak Vite czy webpack. - Zaimportowane nazwy są tylko do odczytu. Nie przypiszesz im nowej wartości, ale gdy moduł źródłowy zmieni swoją zmienną, zobaczysz nową wartość.
- Moduły otwierane prosto z dysku (
file://) zwykle nie działają przez zasady bezpieczeństwa przeglądarki. Uruchom projekt na lokalnym serwerze, np. przez Vite.
Powiązane hasła
#- exportUdostępnia funkcje, klasy i wartości z modułu, aby inne pliki mogły je zaimportować.
- awaitWstrzymuje funkcję async do czasu rozstrzygnięcia obietnicy i zwraca jej wartość albo rzuca jej błąd.
- async functionDeklaruje funkcję asynchroniczną, która zawsze zwraca obietnicę i może używać w środku słowa await.
- constDeklaruje stałą o zasięgu blokowym. Takiej zmiennej nie można ponownie przypisać wartości.
Widzisz błąd albo brakuje przykładu? Napisz do nas.