使用 readline 模塊可以 獲取用戶輸的信息,進而進行相關的業務處理。
下方是一個簡單的 查詢天氣的案例
const http = require('http');
const readline = require('readline');
// 創建
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 接口地址
// http://www.weather.com.cn/data/cityinfo/101010100.html
var root_url = 'http://www.weather.com.cn/data/cityinfo/';
// 城市列表
var city_list = {
'1':{'name':'北京', 'code':'101010100'},
'2':{'name':'上海', 'code':'101020100'},
'3':{'name':'廣州', 'code':'101280101'},
'4':{'name':'深圳', 'code':'101280601'},
'5':{'name':'珠海', 'code':'101280701'},
'6':{'name':'杭州', 'code':'101210101'},
'7':{'name':'福州', 'code':'101230101'},
'8':{'name':'廈門', 'code':'101230201'},
};
// 緩存列表
var cache_list = new Object();
console.log("\n ============ 城市天氣查詢 ============ \n");
dump_city_list();
// 設置提示信息
rl.setPrompt('請輸入城市編號:');
// 打印提示信息
rl.prompt();
// 綁定事件
rl.on('line', (line)=> {
// 獲取輸入的字符串 并去掉多余的空格
var id = line.trim();
// 如果是列表
if(id === 'list'){
dump_city_list();
rl.prompt();
return false;
}
// 轉換成數字
id = parseInt(id);
if(isNaN(id)){
console.log("\n 請輸入正確的城市編號!或者輸入 list 獲取城市列表!\n");
rl.prompt();
return false;
}
// 獲取城市代碼
var current_city = city_list[id]
if(!current_city || !current_city.code){
console.log("\n 沒有找到該城市的天氣信息 \n");
rl.prompt();
return false;;
}
if(cache_list[id.toString()]){
console.log(cache_list[id.toString()]);
rl.prompt();
return true;
}
// 組裝查詢URL
var url = root_url + current_city.code +'.html';
// 發送請求
http.get(url, function (res) {
var data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on("end", function () {
data = JSON.parse(data);
if(!data || !data.weatherinfo){
console.log("\n 網絡錯誤!請稍后重試!");
rl.prompt();
return false;
}
data = data.weatherinfo;
var dump_str = "\n"+" "+data.city+' 天氣:'+data.weather+' 溫度:'+data.temp2 +' 更新時間:'+data.ptime+" \n";
// 寫入緩存
id = id.toString();
if(!cache_list[id]){
cache_list[id] = dump_str;
}
console.log(dump_str);
rl.prompt();
return true;
});
// 出錯 返回信息
}).on("error", function () {
console.log("\n 網絡錯誤!請稍后重試!");
rl.prompt();
return true;
})
}).on('close', ()=>{
console.log('已退出!');
process.exit(0);
})
// 打印城市列表
function dump_city_list(){
console.log("\n");
console.log(" === 編號 === 城市名稱 === 城市編號 === \n");
for (var key in city_list){
console.log(' '+ key+' '+ city_list[key].name +' '+ city_list[key].code);
console.log(" ====================================== \n");
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。