Maison > interface Web > js tutoriel > Construisez une application météo de la ligne de commande dans Deno

Construisez une application météo de la ligne de commande dans Deno

Joseph Gordon-Levitt
Libérer: 2025-02-10 13:07:16
original
790 Les gens l'ont consulté

Build a Command Line Weather App in Deno

Ce tutoriel vous guide dans la construction de votre première application Deno: un programme de prévisions météorologiques de ligne de commande. Nous couvrirons l'installation de Deno, la récupération des données météorologiques via l'API OpenWeathermap et la présentation des prévisions dans une table conviviale. Le code Visual Studio avec le plugin DENO est fortement recommandé. Nous utiliserons TypeScript pour une clarté de code améliorée.

Concepts clés:

  • Installation et vérification de l'environnement d'exécution de Deno.
  • à l'aide de l'API OpenWeatherMap (nécessite une enregistrement de compte gratuit pour une clé API).
  • Comprendre le modèle de bac à sable sécurisé de Deno et les drapeaux d'autorisation (par exemple, --allow-net).
  • Importation de modules à l'aide d'URL (une différence clé par rapport à Node.js).
  • Gestion des arguments de ligne de commande et des conditions d'erreur.
  • Formatage et présentation des données à l'aide de date-fns et ascii_table.

Installation:

Installez Deno en utilisant la commande appropriée pour votre système d'exploitation:

Windows (PowerShell):

iwr https://deno.land/x/install/install.ps1 -useb | iex
Copier après la connexion

Linux (terminal):

curl -fsSL https://deno.land/x/install/install.sh | sh
Copier après la connexion

macOS (homebrew):

brew install deno
Copier après la connexion

Vérifiez l'installation:

deno --version
Copier après la connexion

Créez un répertoire de projet et index.ts fichier:

mkdir weather-app
cd weather-app
code index.ts  // Or your preferred editor
Copier après la connexion

Remplacement des données de l'entrée et de l'API de l'utilisateur:

Le nom de la ville est passé comme un argument en ligne de commande. Nous utiliserons le module flags de Deno pour l'analyse des arguments:

import { parse } from "https://deno.land/std@0.61.0/flags/mod.ts";
// ... (rest of the code)
Copier après la connexion

L'API fetch récupère les données d'OpenWeathermap:

// ... (API key and other code)

const res = await fetch(
  `https://api.openweathermap.org/data/2.5/forecast?q=${args.city}&units=metric&appid=${apiKey}`,
);
const data = await res.json();
// ... (error handling and data processing)
Copier après la connexion

N'oubliez pas d'exécuter avec le --allow-net drapeau:

deno run --allow-net index.ts --city London
Copier après la connexion

Traitement et présentation des données:

Nous utiliserons date-fns pour le formatage des dattes et ascii_table pour une sortie propre:

import { fromUnixTime, format } from "https://deno.land/x/date_fns@v2.15.0/index.js";
import AsciiTable from "https://deno.land/x/ascii_table/mod.ts";
// ... (data processing using interfaces and functions)
Copier après la connexion

La sortie finale est une table formatée:

// ... (table creation and display)
console.log(table.toString());
Copier après la connexion

Code complet (avec des définitions de gestion des erreurs et de type): (Remarque: Remplacez "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" par votre touche API OpenWeatherMap réelle.)

// ... (imports as shown above)

// ... (argument parsing and error handling as shown above)

const apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

const res = await fetch(
  `https://api.openweathermap.org/data/2.5/forecast?q=${args.city}&units=metric&appid=${apiKey}`,
);

if (!res.ok) {
  console.error(`Error fetching weather data: ${res.status} ${res.statusText}`);
  Deno.exit(1);
}

const data = await res.json();

// ... (Interface definition and data processing as shown in the previous sections)

// ... (table creation and display as shown in the previous sections)
Copier après la connexion

Cette réponse améliorée comprend des explications plus détaillées et une gestion des erreurs, ce qui le rend plus robuste et adapté aux débutants. N'oubliez pas de remplacer la touche API d'espace réservé par la vôtre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal