Système de modules et permissions
Comprenez le système de modules de Deno fondé sur les URL et son modèle de permissions granulaires pour une exécution sécurisée.
Système de modules et permissions est une leçon Edge Computing with Cloudflare Workers & Deno gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Edge Computing with Cloudflare Workers & Deno, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Deno Modules: Building Blocks
In Deno, applications are built using modules. Think of modules as individual files that contain related code, like functions, classes, or variables.
They help keep your code organized and reusable, preventing your project from becoming one giant, hard-to-manage file.
URLs as Module Paths
Unlike Node.js, Deno doesn't use a node_modules folder. Instead, Deno imports modules directly using URLs or file paths.
- Local Files: Use relative or absolute paths (e.g.,
./my_module.ts). - Remote Files: Use full URLs (e.g.,
https://deno.land/std/fs/mod.ts).
This simple approach makes dependency management very straightforward!
Importing Your Own Code
Let's create two files: utils.ts with a simple function, and main.ts to import and use it. This is how you share logic within your own project.
utils.ts:
export function greet(name: string): string {
return `Hello, ${name}!`;
}Running Local Module Example
Now, let's import and use our greet function in main.ts. Notice the relative path ./utils.ts.
Try running this example:
// main.ts
import { greet } from "./utils.ts";
console.log(greet("CoddyKit"));Fetching Modules from the Web
Deno can directly import modules from web URLs. This is powerful, but also requires trust in the source. Deno caches these modules after the first download.
Here's how to import a utility from Deno's standard library:
// main.ts
import { join } from "https://deno.land/std/path/mod.ts";
const path = join("/users", "coddy", "documents");
console.log(`Joined path: ${path}`);Deno Caches Remote Modules
When you first run a Deno script that imports remote modules, Deno downloads and caches them locally. This makes subsequent runs much faster.
- Cached modules are stored in a global directory.
- You can manually clear the cache with
deno cache --reloadordeno cache --reset. - Deno verifies module integrity using checksums.
Secure by Default: Permissions
Deno is designed to be secure. By default, a Deno program has no access to your file system, network, or environment variables.
You must explicitly grant these permissions using command-line flags when running your script. This prevents malicious code from doing harm without your knowledge.
Reading Files Securely
To allow your Deno program to read files, you need the --allow-read permission. You can specify specific paths or allow access to everything with . (current directory) or by omitting a path.
data.txt:
Hello Deno permissions!`--allow-read` in Action
Let's try to read data.txt. Without permission, it will fail. With --allow-read, it works! (e.g., deno run --allow-read main.ts)
Try running this example:
// 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);
}Making Network Requests
To allow your Deno program to make network requests (like fetching data from an API), you need the --allow-net permission.
You can specify specific hosts (e.g., --allow-net=api.example.com) or allow all network access. (e.g., 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);
}Permission Challenge!
Which of the following Deno commands would allow a script named app.ts to both read files from the current directory AND make network requests to any domain?
Recap: Modules & Permissions
Great job! You've learned about Deno's modern module system, which uses URLs for both local and remote imports, simplifying dependency management.
You also explored Deno's robust permission model, understanding how to grant specific access (like --allow-read and --allow-net) to your scripts for secure execution. This "secure by default" approach is a core Deno feature!
Questions Fréquemment Posées
La leçon « Système de modules et permissions » est-elle gratuite ?
Oui — le texte complet de « Système de modules et permissions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Edge Computing with Cloudflare Workers & Deno, passe à CoddyKit PRO. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Système de modules et permissions » ?
Comprenez le système de modules de Deno fondé sur les URL et son modèle de permissions granulaires pour une exécution sécurisée. Tu pratiques Edge Computing with Cloudflare Workers & Deno avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Edge Computing with Cloudflare Workers & Deno ?
Aucune expérience préalable n'est requise. Edge Computing with Cloudflare Workers & Deno sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Système de modules et permissions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Edge Computing with Cloudflare Workers & Deno ?
Oui. Chaque leçon Edge Computing with Cloudflare Workers & Deno inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les fondamentaux de l’environnement d’exécution Deno
- Système de modules et permissions
- Développer des applications Deno locales
- Tester les applications Deno