news 2026/6/24 0:06:02

1小时搞定:用await快速开发天气查询CLI工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1小时搞定:用await快速开发天气查询CLI工具

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    开发一个Node.js命令行天气查询工具,功能包括:1) 接收城市名参数;2) 调用天气API(如OpenWeatherMap);3) 显示当前天气和预报;4) 支持保存查询历史。要求:使用commander.js处理命令行参数,用chalk美化输出,用inquirer.js实现交互式查询,所有异步操作使用await,要有完整的错误处理和用户引导。提供示例API调用和模拟数据用于快速测试。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

最近想练习Node.js的异步编程,于是决定用await语法快速开发一个命令行天气查询工具。整个过程从构思到可运行产品只用了1小时,分享这个快速原型的实现思路和踩坑经验。

1. 项目构思与工具选型

目标是做一个能查询实时天气和预报的CLI工具,需要满足:

  • 输入城市名即可查询
  • 显示温度、天气状况等基础信息
  • 界面友好且有颜色区分
  • 能记录查询历史方便回溯

选择以下工具链:

  • commander.js:处理命令行参数
  • chalk:给终端输出加颜色
  • inquirer.js:实现交互式问答
  • axios:调用天气API
  • 全程使用async/await处理异步

2. 核心功能实现步骤

  1. 初始化项目创建项目目录后,用npm初始化并安装上述依赖。注意axiosinquirer都需要显式安装。

  2. 命令行参数解析commander定义city参数作为查询入口,比如weather-cli query --city Beijing。这里通过.option()方法配置参数规则。

  3. API请求封装使用OpenWeatherMap的免费API,用axios发起GET请求。关键点:

  4. 在环境变量配置API_KEY
  5. try/catch包裹请求过程
  6. 对HTTP错误状态码做统一处理

  7. 数据展示优化chalk给不同天气状况配颜色:

  8. 高温显示红色
  9. 低温显示蓝色
  10. 降雨提示黄色背景
  11. 使用console.table美化预报列表

  12. 历史记录功能每次查询后将结果写入本地.weather_history文件,下次启动时显示最近5条记录。用Node.js的fs/promises实现文件操作。

  13. 交互模式增强通过inquirer提供两种交互:

  14. 主菜单选择查询或查看历史
  15. 查询失败时提示重新输入城市名

3. 开发中的关键技巧

  • 错误处理:对网络超时、无效城市名、API限额等场景都有友好提示
  • 快速测试:开发时用mock数据跳过真实API调用(如模拟axios.get返回值)
  • 用户体验:查询时显示加载动画,用ora库实现
  • 配置管理:通过dotenv管理API密钥,避免硬编码

4. 完整开发流程示例

  1. 创建index.js作为入口文件
  2. 编写weatherService.js处理API逻辑
  3. 实现cli.js整合所有交互功能
  4. package.json中添加bin字段使其可全局安装
  5. 测试时用npm link本地调试

整个过程代码不到200行,但覆盖了CLI工具的核心需求。用await让异步逻辑清晰易读,比如:

async function getWeather(city) { try { const response = await axios.get(API_URL, { params: { q: city } }); return response.data; } catch (error) { throw new Error('获取天气数据失败'); } }

5. 快速原型经验总结

  • 迭代要快:先用最简单实现跑通流程,再逐步增强
  • 模块化:拆分功能到不同文件,方便后续扩展
  • 用户体验:CLI工具要特别关注错误引导和状态反馈

这个项目在InsCode(快马)平台可以一键运行测试,他们的在线编辑器内置Node.js环境,省去了本地配置的麻烦。我实际测试发现:

  1. 直接粘贴代码就能运行
  2. 终端交互效果和本地完全一致
  3. 无需操心API密钥泄露(有环境变量管理)

对于想快速验证想法的小工具,这种免配置的开发体验确实高效。如果继续迭代,下一步可能加入:多语言支持、空气质量指标、天气预警通知等功能。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    开发一个Node.js命令行天气查询工具,功能包括:1) 接收城市名参数;2) 调用天气API(如OpenWeatherMap);3) 显示当前天气和预报;4) 支持保存查询历史。要求:使用commander.js处理命令行参数,用chalk美化输出,用inquirer.js实现交互式查询,所有异步操作使用await,要有完整的错误处理和用户引导。提供示例API调用和模拟数据用于快速测试。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:31:10

R语言下载入门:零基础到实战指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向初学者的R语言教程项目,包含:1)最基本的download.file()使用示例;2)进度条添加方法;3)常见错误及解决方法;4…

作者头像 李华
网站建设 2026/6/23 19:10:12

5分钟快速验证Minecraft插件架构

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个支持插件系统的Minecraft服务器快速原型Helm Chart,要求:1) 基础服务器部署;2) 插件自动加载机制;3) 示例插件(如WorldEdit)…

作者头像 李华
网站建设 2026/6/23 19:16:11

出STM32智慧系统

基于STM32的智慧家居系统,可出。 功能大概有显示屏,语音控制,灯,温湿度,空气质量等;还有继电器,可连接其他需要的功能,如风扇等。 核心芯片STM32F103C8T6,可出原理图&a…

作者头像 李华
网站建设 2026/6/23 14:53:41

3步快速解决Windows安装配置错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个极简的Windows安装错误修复工具,专注于快速解决无法将Windows配置为在此计算机上运行问题。工具应:1) 三步操作完成诊断;2) 自动应用最常…

作者头像 李华
网站建设 2026/6/23 19:33:46

AI如何帮你理解traceroute命令?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个AI辅助网络诊断工具,能够自动解析traceroute命令的输出结果。功能包括:1) 识别并高亮显示网络延迟异常节点 2) 自动分析可能的网络瓶颈位置 3) 提供…

作者头像 李华
网站建设 2026/6/23 19:33:58

09 - 使用Django开发Web应用

Python Web 框架的使用率仍然是 Flask、Django 和 FastAPI 之间的三强之争。所有其他框架加起来只能勉强排在第三位。下面对这三个主流框架做下比较: Djanggo 使用比率: 39%系统特点:全栈框架:内置 ORM、模板引擎、表单处理、用户…

作者头像 李华