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
Joseph Gordon-Levittoriginal
2025-02-10 13:07:16819parcourir

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):

<code class="language-powershell">iwr https://deno.land/x/install/install.ps1 -useb | iex</code>

Linux (terminal):

<code class="language-bash">curl -fsSL https://deno.land/x/install/install.sh | sh</code>

macOS (homebrew):

<code class="language-bash">brew install deno</code>

Vérifiez l'installation:

<code class="language-bash">deno --version</code>

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

<code class="language-bash">mkdir weather-app
cd weather-app
code index.ts  // Or your preferred editor</code>

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:

<code class="language-typescript">import { parse } from "https://deno.land/std@0.61.0/flags/mod.ts";
// ... (rest of the code)</code>

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

<code class="language-typescript">// ... (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)</code>

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

<code class="language-bash">deno run --allow-net index.ts --city London</code>

Traitement et présentation des données:

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

<code class="language-typescript">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)</code>

La sortie finale est une table formatée:

<code class="language-typescript">// ... (table creation and display)
console.log(table.toString());</code>

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

<code class="language-typescript">// ... (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)</code>

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:
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