Modulsystem og tillatelser
Forstå Denos URL-baserte modulsystem og detaljerte tillatelsesmodell for sikker kjøring.
Modulsystem og tillatelser er en gratis leksjon i Edge computing med Cloudflare Workers og Deno på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Edge computing med Cloudflare Workers og Deno, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Edge computing med Cloudflare Workers og Deno inneholder totalt 4 leksjoner.
Deno-moduler: Byggeklossene
I Deno bygges applikasjoner ved hjelp av moduler. Tenk på moduler som enkeltfiler som inneholder beslektet kode, for eksempel funksjoner, klasser eller variabler.
De bidrar til å holde koden organisert og gjenbrukbar, slik at prosjektet ikke blir én stor og vanskelig håndterbar fil.
URL-er som modulbaner
I motsetning til Node.js bruker ikke Deno en node_modules-mappe. I stedet importerer Deno moduler direkte ved hjelp av URL-er eller filbaner.
- Lokale filer: Bruk relative eller absolutte baner (for eksempel
./my_module.ts). - Eksterne filer: Bruk fullstendige URL-er (for eksempel
https://deno.land/std/fs/mod.ts).
Denne enkle tilnærmingen gjør avhengighetshåndtering svært oversiktlig!
Importere Deres egen kode
La oss opprette to filer: utils.ts med en enkel funksjon og main.ts for å importere og bruke den. Slik deler De logikk i Deres eget prosjekt.
utils.ts:
export function greet(name: string): string {
return `Hello, ${name}!`;
}Kjøre et eksempel med en lokal modul
Nå importerer og bruker vi greet-funksjonen i main.ts. Legg merke til den relative banen ./utils.ts.
Prøv å kjøre dette eksempelet:
// main.ts
import { greet } from "./utils.ts";
console.log(greet("CoddyKit"));Hente moduler fra nettet
Deno kan importere moduler direkte fra URL-er på nettet. Dette er kraftig, men krever også at De stoler på kilden. Deno mellomlagrer disse modulene etter den første nedlastingen.
Slik importerer De et verktøy fra Deno-standardbiblioteket:
// main.ts
import { join } from "https://deno.land/std/path/mod.ts";
const path = join("/users", "coddy", "documents");
console.log(`Joined path: ${path}`);Deno mellomlagrer eksterne moduler
Når De kjører et Deno-skript som importerer eksterne moduler for første gang, laster Deno dem ned og mellomlagrer dem lokalt. Dette gjør senere kjøringer mye raskere.
- Mellomlagrede moduler lagres i en global mappe.
- De kan tømme mellomlageret manuelt med
deno cache --reloadellerdeno cache --reset. - Deno bekrefter modulintegriteten ved hjelp av kontrollsummer.
Sikkert som standard: Tillatelser
Deno er utviklet med sikkerhet i fokus. Som standard har et Deno-program ingen tilgang til filsystemet, nettverket eller miljøvariablene Deres.
De må uttrykkelig gi disse tillatelsene ved hjelp av kommandolinjeflagg når De kjører skriptet. Dette hindrer skadelig kode i å gjøre skade uten Deres viten.
Lese filer på en sikker måte
For at Deno-programmet skal kunne lese filer, trenger De tillatelsen --allow-read. De kan angi bestemte baner eller tillate tilgang til alt ved å bruke . (gjeldende mappe) eller utelate en bane.
data.txt:
Hello Deno permissions!`--allow-read` i praksis
La oss prøve å lese data.txt. Uten tillatelse mislykkes det. Med --allow-read fungerer det! (for eksempel deno run --allow-read main.ts)
Prøv å kjøre dette eksempelet:
// main.ts
const filePath = "./data.txt";
try {
const content = await Deno.readTextFile(filePath);
console.log("File content:", content);
} catch (error) {
console.error("Error reading file:", error.message);
}Gjøre nettverksforespørsler
For at Deno-programmet skal kunne gjøre nettverksforespørsler (for eksempel hente data fra et API), trenger De tillatelsen --allow-net.
De kan angi bestemte verter (for eksempel --allow-net=api.example.com) eller tillate all nettverkstilgang. (for eksempel deno run --allow-net main.ts)
// main.ts
try {
const response = await fetch("https://deno.land/std/README.md");
if (response.ok) {
const text = await response.text();
console.log("Fetched content (first 50 chars):");
console.log(text.substring(0, 50));
} else {
console.error("Failed to fetch:", response.statusText);
}
} catch (error) {
console.error("Network error:", error.message);
}Tillatelsesutfordring!
Hvilken av de følgende Deno-kommandoene gjør det mulig for et skript med navnet app.ts både å lese filer fra gjeldende mappe OG sende nettverksforespørsler til alle domener?
Oppsummering: Moduler og tillatelser
Godt jobbet! De har lært om Denos moderne modulsystem, som bruker URL-er for både lokale og eksterne importer og dermed forenkler avhengighetshåndteringen.
De har også utforsket Denos robuste tillatelsesmodell og forstått hvordan De kan gi skriptene spesifikk tilgang (som --allow-read og --allow-net) for sikker kjøring. Denne «sikker som standard»-tilnærmingen er en sentral funksjon i Deno!
Lær deg Edge computing med Cloudflare Workers og Deno med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 47
Ofte stilte spørsmål
Er leksjonen «Modulsystem og tillatelser» gratis?
Ja – hele teksten i «Modulsystem og tillatelser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Edge computing med Cloudflare Workers og Deno-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Edge computing med Cloudflare Workers og Deno inneholder totalt 4 leksjoner.
Hva lærer jeg i «Modulsystem og tillatelser»?
Forstå Denos URL-baserte modulsystem og detaljerte tillatelsesmodell for sikker kjøring. Du øver på Edge computing med Cloudflare Workers og Deno med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Edge computing med Cloudflare Workers og Deno?
Ingen tidligere erfaring er nødvendig. Edge computing med Cloudflare Workers og Deno på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Modulsystem og tillatelser»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Edge computing med Cloudflare Workers og Deno-leksjonen?
Ja. Alle Edge computing med Cloudflare Workers og Deno-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Det viktigste om Deno-runtime
- Modulsystem og tillatelser
- Utvikle lokale Deno-applikasjoner
- Teste Deno-applikasjoner