说明:本文模块代码并非可直接调用,主要为函数调用的接口,需自行补充完整剩余部分(在各模块的注意部分有说明)
一、本项目使用的nodejs模块有:
- fs文件模块
- request模块
- qs模块
二、需要构建的组件:
- readIp : 用于读取JSON格式的Ip地址;
- ip2geo:通过telize.com公共服务和解析的ip地址获取特定城市的信息;
- geo2weather:通过特定城市位置获取对应的天气情况;
- geo2weathers:通过ip2geo和geo2weather接口,并遍历解析的ip数组获取多个城市的weathers数据集合;
- writeWeather:将获取的weathers数据写入本地文件保存;
三、总体思路:
通过readip模块读取本地的JSON格式的IP地址数组,然后通过ip2geo模块获取相应城市位置相关信息的数组,并结合geo2weather模块一起供geo2weathers模块调用,遍历城市位置数组,以获取各城市的天气情况数组,最后通过writeIp模块保存下来。
四、各模块分析:
① readIp模块:
需查询的城市对应的IP地址:
[
"115.29.230.208",
"180.153.132.38",
"75.125.235.224",
"91.239.201.98",
"60.28.215.115"
]
模块代码:
const fs = require('fs'); //引入fs模块
function readIp(path, callback){
//path为ip路径,或者自己设置读取的相应位置
fs.readFile(path, function(err, data){
if(err){
callback(err);
}else{
try{
data = JSON.parse(data);
callback(null, data)
}catch(error){
callback(error);
}
}
})
}
module.exports.readIp = readIp