This tutorial guides you through building your first Deno application: a command-line weather forecast program. We'll cover Deno installation, fetching weather data via the OpenWeatherMap API, and presenting the forecast in a user-friendly table. Visual Studio Code with the Deno plugin is highly recommended. We'll use TypeScript for enhanced code clarity.
Key Concepts:
--allow-net
).date-fns
and ascii_table
.Installation:
Install Deno using the appropriate command for your operating system:
Windows (PowerShell):
iwr https://deno.land/x/install/install.ps1 -useb | iex
Linux (Terminal):
curl -fsSL https://deno.land/x/install/install.sh | sh
macOS (Homebrew):
brew install deno
Verify installation:
deno --version
Create a project directory and index.ts
file:
mkdir weather-app cd weather-app code index.ts // Or your preferred editor
Fetching User Input and API Data:
The city name is passed as a command-line argument. We'll use Deno's flags
module for argument parsing:
import { parse } from "https://deno.land/std@0.61.0/flags/mod.ts"; // ... (rest of the code)
The fetch
API retrieves data from 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)
Remember to run with the --allow-net
flag:
deno run --allow-net index.ts --city London
Data Processing and Presentation:
We'll use date-fns
for date formatting and ascii_table
for a clean output:
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)
The final output is a formatted table:
// ... (table creation and display) console.log(table.toString());
Complete Code (with error handling and type definitions): (Note: Replace "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
with your actual OpenWeatherMap API key.)
// ... (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)
This enhanced response includes more detailed explanations and error handling, making it more robust and beginner-friendly. Remember to replace the placeholder API key with your own.
The above is the detailed content of Build a Command Line Weather App in Deno. For more information, please follow other related articles on the PHP Chinese website!