加载中 ...
首页 > 新闻资讯 > 经验心得 正文

小程序开发(二):使用hapi快速开发接口

2019-07-12 22:01:05 来源:沈阳小程序开发 作者:沈阳软件开发

在上一篇文章中,我们介绍了与数据收集相关的知识。在本文中,我们将在nodejs开发背景中理清常用的库,然后选择hapi来开发restful API,以及使用计时任务和RPC。

nodejs主流框架介绍

让我们首先看一下nodejs的当前主流框架:

1. Express(43.4k)

对于已经使用nodejs的开发人员来说,Express并不是新的,它为nodejs的原始API提供了一个很好的包装器,使开发人员更容易使用nodejs。

2. Meteor(41k)

流星也是一个非常好的框架。我记得官方网站上有一句话,“用更少的代码发货”,它也像这句话,无论是服务器数据库访问,业务逻辑实现,还是客户端显示,所有流程都是开箱即用的。另一点应该是“配置大于发展”的想法。很多东西都可以通过配置直接实现。不需要太多代码。我认为这是这个框架的一个非常有力的观点。

3. Koa(25.8k)

Koa是由原来的快递团队开发的。核心是ES6发电机。生成器用于实现中间件的流量控制。在Koa框架中,不会看到复杂的回调。框架本身非常小,只包含一些必要的功能,但它以非常模块化的方式组织,允许用户以自己的方式实现一个非常可伸缩的应用程序。

4. sails(20.4k)

帆在底层使用表达来提供对HTTP请求的处理,同时使用Socket.IO框架来处理WebSocket的请求,也通过水线框架实现了ORM功能,你的应该程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外后端数据库(也可以是一个NoSQL的数据库)。

5. egg(12.4k)

鸡蛋是阿里的一个团队,基于兴亚开发的框架,奉行【约定优于配置】,按照一套统一的约定进行应用开发,插件机制也比较完善,也是很好用的。之前写的微博词云的api就是用egg来写的,http://zz.mcust.cnERP系统

ad.jpg

,这个网站也是egg来写的。

6.hapi(11k)

Hapi在众多的框架中并非一个老牌选手,然而他却成功的在这当中创造了自己的一个生态圈。致力于完全的分离节点HTTP服务器,路由以及业务逻辑,并更多的聚焦于如何尽可能的通过配置而非代码来控制东西。

这次选择Hapi的原因其实也很简单,因为之前没用过。

使用Hapi

每一次学习一个东西,其实套路都是差不多的,我们先去官网看看。

102821fzr7g7gj7iij1tqq.jpg

%20

这里我们有很多的关键点,有更新信息,指南说明,API文档,插件,版本号,最近更新时间,下载次数,源码等等信息。看更新时间和下载次数看来,活跃人数还是比较多的,这些数据也能从某个维度上来对一个框架的做一些评判。

XX 然后转到教程并按照教程学习如何创建http服务,如何使用路由,获取URL参数,cookie,日志,验证,视图等。%20

下面就正式进入小程序的接口开发中

创建一个项目,项目文件目录大致如下:

%20

模型代表数据模型,我定义了sequelize模型,数据结构;控制器是业务逻辑的主要部分;路由器定义路由,参数验证,路由方法等;%20common定义了一些公共方法,一些加密方法,生成uuid的方法等;%20config是项目数据库配置和插件配置;%20log是放置日志文件的地方。%20

%20

然后我们在这里使用了很多插件,还有一些工具包可以帮助我们更快地完成任务。%20

这实际上是一个热点。在开发环境中,部署了主管。在生产环境中,我们使用pm2进行部署。%20

下面我们来看下hapi中如何使用定时任务

我们来看看hapi中是否存在一个现有的定时任务工具。让我们去官方网站插件并搜索“cron”,

%20

发现有,那么我们可以直接使用hapi-cron库。%20

您需要先配置计划任务:

%20

然后注入服务。%20

上述配置意味着每天在6点,11点,16点和23点请求/spider_articles。不熟悉cron表达式的同志可以略微补充这些知识。%20

然后在此界面中发送了三个请求,这是我们最后一次部署爬网程序服务。%20

通过这种方式,我们完成了通过定时任务定期抓取数据的工作。%20

1460000018970921

其他接口都比较正常,需要操作数据库,有些需要rpc,它比较简单易懂,所以我这里就不说了。

本节中关于hapi的部分就在这里。

NEXT

接下来,我们将介绍小程序,mpvue的开发,以及小程序原始组件的使用,以及小程序的一些重要配置。

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。