Home >Web Front-end >JS Tutorial >Build a Command Line Weather App in Deno
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):
<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>
Verify installation:
<code class="language-bash">deno --version</code>
Create a project directory and index.ts
file:
<code class="language-bash">mkdir weather-app cd weather-app code index.ts // Or your preferred editor</code>
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:
<code class="language-typescript">import { parse } from "https://deno.land/std@0.61.0/flags/mod.ts"; // ... (rest of the code)</code>
The fetch
API retrieves data from 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>
Remember to run with the --allow-net
flag:
<code class="language-bash">deno run --allow-net index.ts --city London</code>
Data Processing and Presentation:
We'll use date-fns
for date formatting and ascii_table
for a clean output:
<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>
The final output is a formatted table:
<code class="language-typescript">// ... (table creation and display) console.log(table.toString());</code>
Complete Code (with error handling and type definitions): (Note: Replace "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
with your actual OpenWeatherMap API key.)
<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>
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!