上篇文章中,我们介绍了数据采集相关的知识,这篇文章中,我们来整理下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,以及小程序原始组件的使用,还有小程序一些重要的配置等。​​​​


丨avnA丶
10 声望3 粉丝

自由开发者,喜欢python/PHP/Nodejs等语言。