Vi har ofte behov for å importere data og funksjonar frå kodebibliotek når vi skriv JavaScript. Vi kan òg lage eigne modular som kan importerast og eksporterast mellom JavaScript-filer.
Det kan ofte vere fordelaktig å dele opp JavaScript-koden i fleire filer. Det kan vere at vi ønsker å skilje ut variablar som skal vere enkle å endre på, eller at vi har funksjonar eller klassar som skal brukast av fleire websider eller program.
Dersom du har brukt Firebase, MySQL eller React på ei webside, har du sikkert sett nøkkelordet import øvst i koden, og at scriptet i HTML-fila har type="module" i script-taggen. Då er det brukt modular.
Lag din eigen modul
No skal du lage din eigen enkle modul. Først må du lage ei .js-fil. Kall fila namn.js, og legg inn denne koden:
Lek merke til at vi bruker krøllparentes rundt variabelnamna som skal eksporterast.
Lag så ei HTML-fil i same mappe som du kallar index.html. Legg inn dei nødvendige taggane du treng for å lage ei webside. (I VS Code: skriv ! (utropsteikn) og trykk enter.) Nedst i <body>-taggen skriv du denne koden:
Viss du opnar index.html i nettlesaren og opnar inspiser-verktøyet, vil du sjå at Kim er skrive ut i konsollen. Prøv å endre namnet i namn.js til noko anna, og oppdater sidan. Då vil du sjå at det nye namnet blir skrive ut.
Får du feilmelding i konsollen?
Dersom du opnar HTML-fila frå harddisken (frå "Utforskar" eller "Finder"), kan du få denne feilmeldinga:
"Access to script at 'file:///(...)/namn.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https."
Dette er på grunn av ei avgrensing i Chrome-nettlesaren som gjer at nettsider berre kan referere til filer på webserverar og ikkje filer på ein harddisk. For å løyse problemet må du starte ein lokal webserver på maskina di. Den enklaste måten å gjere det på er å installere tillegget Live Previeweller Live Serveri Visual Studio Code.
Eksportere og importere fleire variablar
Ein modul kan innehalde fleire datatypar. Dersom vi tek utgangspunkt i namn.js frå det førre dømet, kan vi legge til ein variabel for alder. Då blir koden slik:
Vi kan no importere begge variablane i index.html, slik:
Konsollen i nettlesaren vil då vise Kim er 17 år gammal.
Definere klassar i eigne modular
Det er ikkje berre variablar som kan eksporterast og importerast. Vi kan eksportere alle typar data, som lister, objekt og klassar.
Det kan vere ryddig å skilje ut klassar i eigne modular. Då kan du importere klassane og berre ha koden for å opprette objekt i scriptet til nettsida. Dersom vi tek utgangspunkt i dømet om bilar, kan vi opprette fila bilar.js:
Då kan vi bruke desse klassane i fleire andre filer ved å importere klassane i scriptet.
Bruke modular for å skilje ut databasekopling
Dersom vi bruker ei databasekopling, kan vi skilje ut koden vi bruker for å kople til databasen i ei eiga fil. Då blir koden vår ryddigare, og vi slepp å lime inn denne koden i alle filene der vi skal bruke databasen. Dersom du til dømes skal bruke Firebase, kan du lage ein modul med databasekonfigurasjonen og eksportere databaseobjektet. I alle andre filer som bruker databasen, treng du dermed berre importere denne modulen. Denne koden kan sjå slik ut:
Når du no skal bruke Firestore-databasen på nettsida di, treng du berre importere db frå firebaseconfig.js, slik:
I denne guiden vil du lære eit basisoppsett som du skal bruke vidare i modulen "Lage ei dynamisk webside med databasekopling i Firebase Cloud Firestore".