小程序开发(二):使用hapi快速开发接口
上篇文章中,我们介绍了数据采集相关的知识,这篇文章中,我们来整理下nodejs开发后台常用的库,然后选择hapi来进行restful API的开发,以及定时任务、RPC的使用。
nodejs主流框架介绍
我们先来看下目前nodejs主流的框架:
1. Express(43.4k)
对于一个已经在使用nodejs的开发人员来说,Express并不是一个新鲜事,它提供了对nodejs原始API的比较好的封装,从而使开发者更加容易使用nodejs。
2. Meteor(41k)
Meteor也是一个很出色的框架,记得官网有一句话,“Ship more with less code”, 确实也是像这句话一样,不管是服务器数据库的访问,业务逻辑实现,还是客户端的展示,所有的流程都是开箱即用的。还有一个点应该是 “配置大于开发”的思想,很多东西都是可以直接通过配置来实现,不需要太多的代码,这点我觉得也是这个框架很厉害的一个点。
3. Koa(25.8k)
Koa是express的原班人马开发的,核心是ES6的generator,使用generator来实现中间件的流程控制,在Koa框架中就再不会看到复杂的callback了。框架本身非常小,只打包了一些必要的功能,但是它本身通过良好的模块化组织,让使用者可以按照自己的想法来实现一个扩展性非常好的应用。
4. sails(20.4k)
Sails在底层使用express来提供对http请求的处理,同时使用Socket.IO框架来处理websocket请求,也通过waterline框架实现了ORM功能,你的应该程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外后端数据库(也可以是一个NoSQL数据库)。
5. egg(12.4k)
egg是阿里的一个团队,基于Koa开发的框架,奉行【约定优于配置】,按照一套统一的约定进行应用开发,插件机制也比较完善,也是很好用的。之前写的微博词云的api就是用egg来写的,http://zz.mcust.cn,这个网站也是egg来写的。
6.hapi(11k)
Hapi在众多的框架中并非一个老牌选手,然而他却成功的在这当中创造了自己的一个生态圈。致力于完全的分离node HTTP服务器,路由以及业务逻辑,并更多的聚焦于如何尽可能的通过配置而非代码来控制东西。
这次选择Hapi的原因其实也很简单,因为之前没用过。
使用Hapi
每一次学习一个东西,其实套路都是差不多的,我们先去官网看看。
这里我们有很多的关键点,有更新信息,指南说明,api文档,插件,版本号,最近更新时间,下载次数,源码等等信息。看更新时间和下载次数看来,活跃人数还是比较多的,这些数据也能从某个维度上来对一个框架的做一些评判。
然后进入tutorials,照着里面的教程动手实践一下,学习如何创建http服务,如何使用路由,获取url参数,cookies,日志、验证、视图等等。
下面就正式进入小程序的接口开发中
创建项目,项目文件目录大致如下:
- models代表数据模型,我在里面定义了sequelize的模型,数据结构;
- controllers里边是大部分的业务逻辑;
- routers里边定义了路由,以及参数的验证,处理路由的方法等;
- common里面定义了公共的一些方法,一些加密的方法,生成uuid的方法等;
- config里面是项目数据库配置和插件配置;
- log是放日志文件的地方。
然后我们这里也用了很多的插件,和一些工具包等来帮助我们更快地完成任务。
这块其实比较重要的一点是热部署,开发环境中,使用了supervisor来部署;而生产环境我们是用了pm2来部署。
下面我们来看下hapi中如何使用定时任务
我们先看看hapi有没有已经有的定时任务工具,我们去官网插件里搜一下“cron”,
发现是有的,那我们就直接用hapi-cron这个库即可。
需要先配置下定时任务:
然后注入到服务中即可。
上面的配置表示每天的6点、11点、16点、23点回去请求/spider_articles这个请求。对cron表达式不熟悉的同志们可以稍微补补这方面的知识。
然后这个接口里是发送了三个请求,是我们上次部署好的爬虫服务。
这样我们就通过定时任务完成了定时去爬数据的工作。
别的接口都是比较正常的,需要操作下数据库即可,还有一部分是需要rpc的,也是比较简单好理解的,在这里就不细谈了。
本节关于hapi的部分到这里就结束了。
NEXT
下一篇,我们会介绍小程序的开发,mpvue,以及小程序原始组件的使用,还有小程序一些重要的配置等。