[实战] 实现抢票小工具&短信通知提醒,2024最新前端常用开源库总结

本文介绍了一个实现抢票小工具的实战过程,包括使用node-schedule定时查询、cheerio解析DOM、腾讯短信通知等。同时,文章总结了2024年前端开发常用的开源库,涉及数据结构与算法等技术,适合前端开发者参考学习。
摘要由CSDN通过智能技术生成

cnpm install node-schedule --save

  1. node端选择dom节点工具 cheerio

cnpm install cheerio --save

  1. 腾讯发短信的依赖包 qcloudsms_js

cnpm install qcloudsms_js

  1. 热更新包,诺豆的妈妈, nodemon (其实不用也可以)

cnpm install nodemon --save-dev

开发请求余票接口


接着 touch index.js创建核心js文件,开始编码:

首先引入所有依赖

const axios = require(‘axios’)

const querystring = require(“querystring”); //序列化对象,用qs也行,都一样

let QcloudSms= require(“qcloudsms_js”);

let cheerio = require(‘cheerio’);

let schedule = require(‘node-schedule’);

然后我们先定义请求参数,来一个obj

let obj = {

data: {

lineId: 111130, //路线id

vehTime: 0722, //发车时间,

startTime: 0751, //预计上车时间

onStationId: 564492, //预定的站点id

offStationId: 17990,//到站id

onStationName: ‘宝安交通运输局③’, //预定的站点名称

offStationName: “深港产学研基地”,//预定到站名称

tradePrice: 0,//总金额

saleDates: ‘17’,//车票日期

beginDate: ‘’,//订票时间,滞空,用于抓取到余票后填入数据

},

phoneNumber: 123123123, //用户手机号,接收短信的手机号

cookie: ‘JSESSIONID=TESTCOOKIE’, // 抓取到的cookie

day: “17”//定17号的票,这个主要是用于抢指定日期的票,滞空则为抢当月所有余票

}

接着声明一个名为 queryTicket的类,为啥要用类呢,因为基于第五个需求点,多个用户抢票的时候,我们分别 new一下就行了,

同时我们希望能够记录请求余票的次数,和当抢到票后自动停止查询余票的操作,所以给他加上个计数变量 times和是否停止的变量,布尔值 stop

编写代码:

class QueryTicket{

/**

*Creates an instance of QueryTicket.

  • @param {Object} { data, phoneNumber, cookie, day }

  • @param data {Object} 请求余票接口的requery参数

  • @param phoneNumber {Number} 用户手机号,短信需要用到

  • @param cookie {String} cookie信息

  • @params day {String} 某日的票,如’18’

  • @memberof QueryTicket 请求余票接口

*/

constructor({ data, phoneNumber, cookie, day }) {

this.data = data

this.cookie = cookie

this.day = day

this.phoneNumber = phoneNumber

this.postData = querystring.stringify(data)

this.times = 0; //记录次数

let stop = false //通过特定接口才能修改stop值,防止外部随意串改

this.getStop = function () { //获取是否停止

return stop

}

this.setStop = function (ifStop) { //设置是否停止

stop = ifStop

}

}

}

下面开始定义原型方法,为了方便维护,我们把逻辑拆分成各个函数

class QueryTicket{

constructor({ data, phoneNumber, cookie, day }) {

//constructor代码…

}

init(){}//初始化

handleQueryTicket(){}//查询余票的逻辑

requestTicket(){} //调用查询余票接口

handleBuyTicket(){} //购票相关逻辑

requestOrder(){}//调用购票接口

handleInfoUser(){}//通知用户的逻辑

sendMSg(){} //发短信接口

}

所有数据都是基于查询余票的操作,因此我们先开发这部分功能

class QueryTicket{

constructor({ data, phoneNumber, cookie,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值