news 2026/5/1 7:28:50

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/5/1 6:26:28

AI如何简化Android调试?ADB命令智能生成指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个AI辅助ADB命令生成工具,支持自然语言输入如查看连接的设备或安装APK到模拟器,自动转换为正确的ADB命令。包含常用功能:设备列表查看、AP…

作者头像 李华
网站建设 2026/4/18 12:02:56

英国和加拿大合作开发用于绿色人工智能的光子引擎

跨大西洋合作:英加联手打造新型国际供应链,加速“绿色AI”创新一项新的英国-加拿大技术合作伙伴关系正在致力于研发一种先进的光子引擎。该技术旨在使全球的人工智能数据中心运行速度更快、效率更高,并更具可持续性。这项合作是今年早些时候签…

作者头像 李华
网站建设 2026/4/30 10:34:13

5分钟验证:用快马快速搭建Python开发环境原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请快速生成一个可立即运行的Linux Python开发环境原型。要求:1.包含Python 3.9基础环境 2.预装常用开发工具(pip,virtualenv等) 3.集成简单示例代码 4.支持一键测试运行…

作者头像 李华
网站建设 2026/5/1 6:26:58

传统漏洞扫描 vs AI自动化:Nacos安全检测效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 设计一个Nacos漏洞扫描效率对比工具,分别实现传统手动扫描流程和AI自动化扫描流程。统计两种方式的耗时、漏洞检出率和误报率,生成对比图表。使用Python编写…

作者头像 李华
网站建设 2026/4/27 8:31:35

Java 1.8在企业级项目中的5个最佳实践

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业级员工管理系统,使用Java 1.8特性实现:1.基于Lambda的查询过滤 2.Stream处理薪资计算 3.使用新的日期API管理入职时间 4.Optional处理可能为nul…

作者头像 李华
网站建设 2026/4/30 23:56:27

软工毕设简单的选题帮助

文章目录🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取?1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢?🚩2 选题概览🚩 3 项目概览题目1 : 图像隐写算法研究与…

作者头像 李华