博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HapiJS开发手冊
阅读量:7237 次
发布时间:2019-06-29

本文共 3418 字,大约阅读时间需要 11 分钟。

HapiJS开发手冊
作者:chszs。转载需注明。博客主页:


一、HapiJS介绍


HapiJS是一个开源的、基于Node.js的应用框架,它适用于构建应用程序和服务,其设计目标是让开发人员把精力集中于开发可重用的应用程序的业务逻辑。向开发人员提供构建应用程序业务逻辑所需的基础设施。HapiJS眼下的最新版本号为7.2.0版。


二、HapiJS安装和项目配置


1、安装Hapi库

HapiJS的安装非常easy。执行例如以下命令:

$ sudo npm install hapi -g

hapi@7.2.0 /usr/local/lib/node_modules/hapi

├── cryptiles@2.0.4

├── heavy@1.0.0

├── topo@1.0.2

├── accept@1.0.0

├── items@1.1.0

├── kilt@1.1.1

├── catbox-memory@1.1.0

├── boom@2.5.1

├── qs@2.2.4

├── call@1.0.0

├── statehood@1.2.0

├── h2o2@2.0.1

├── iron@2.1.2

├── shot@1.3.5

├── glue@1.0.0

├── wreck@5.0.1

├── hoek@2.8.0

├── catbox@4.0.3

├── vision@1.1.0

├── mimos@1.0.0 (mime-db@1.1.1)

├── rejoice@1.0.0 (bossy@1.0.2)

├── inert@1.1.0 (lru-cache@2.5.0)

├── joi@4.7.0 (isemail@1.1.1)

└── subtext@1.0.1 (content@1.0.1, pez@1.0.0)


2、配置项目


1)创建一个名为myproject的新文件夹

$ mkdir myproject

$ cd myproject


2)在文件夹下执行初始化命令

$ npm init

此命令会生成package.json文件,它是项目的元数据。

接着执行命令:

$ npm install --save hapi

它会安装hapi库到项目下,并把hapi的依赖关系写入package.json。


此时,项目开发所需的一切都已经准备完成。


三、开发实例


1、创建服务器

// server.js

var Hapi = require('hapi');

var server = new Hapi.Server(3000);


server.start(function(){

console.log('Server running at: ', server.info.uri);

});


首先,我们须要Hapi库。

其次,我们创建一个新hapi服务器对象,并把要监听的端口号传递给服务器对象。

最后,服务器对象启动,并输出日志信息。

要说明一点。我们创建服务器对象时。能够提供主机名、IP地址。甚至是Unix的socket文件,或者是Windows系统绑定到服务器命名的管道。
2、启动服务器
执行命令:
$ node server.js
訪问http://127.0.0.1:3000/ 。浏览器显演示样例如以下内容:
{"statusCode":404,"error":"Not Found"}
非常正常。由于服务器上本身就没有不论什么内容,以下把路由逻辑加入上。
3、路由逻辑
// server.js
var Hapi = require('hapi');
var server = new Hapi.Server(3000);
server.route({
method: 'GET',
path: '/',
handler: function(request, reply){
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function(request, reply){
reply('Hello, ' + encodeURIComponent(request.params.name) + "!");
}
});
server.start(function(){
console.log('Server running at: ', server.info.uri);
});
再次启动服务器:
$ node server.js
并訪问http://127.0.0.1:3000/ 。浏览器显演示样例如以下内容:
Hello, world!
訪问http://127.0.0.1:3000/张三 。浏览器显演示样例如以下内容:
Hello, %E5%BC%A0%E4%B8%89!
可见,路由逻辑执行正常。

要注意:
method的參数能够是随意有效的HTTP方法。也能够是星号*(表示随意HTTP方法)。
path的參数定义了訪问路径,路径能够包括參数、可选參数。甚至是通配符。
四、使用插件
在创建Web应用时。通常我们都须要訪问日志。要为应用程序加入主要的日志输出,我们能够在服务器上载入good插件。
1、安装good插件
$ sudo npm install --save good
good@3.1.1 node_modules/good
├── json-stringify-safe@5.0.0
├── good-reporter@2.0.0
├── async@0.9.0
├── hoek@2.8.1
├── moment@2.8.3
├── good-file@2.0.0 (items@1.1.0)
└── joi@4.7.0 (topo@1.0.2, isemail@1.1.1)
2、更新server.js的代码
// server.js
var Hapi = require('hapi');
var Good = require('good');
var server = new Hapi.Server(3000);
server.route({
method: 'GET',
path: '/',
handler: function(request, reply){
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function(request, reply){
reply('Hello, ' + encodeURIComponent(request.params.name) + "!");
}
});
server.pack.register(Good, function(err){
if(err){
// something bad happened loading the plugin
throw err;
}
server.start(function(){
server.log('info', 'Server running at: ' + server.info.uri);
});
});
执行server.js,控制台输出:
141102/161007.644, info, Server running at: http://localhost:3000
假设我们接着訪问:http://127.0.0.1:3000/liqiang
和http://127.0.0.1:3000/
控制台会继续输出:
141102/161150.689, request, http://Thinker-LQ:3000: get /liqiang {} 200 (37ms) 
141102/161155.812, request, http://Thinker-LQ:3000: get / {} 200 (4ms) 

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5172061.html,如需转载请自行联系原作者

你可能感兴趣的文章
原 在windows上创建文件名以“.”开头的文件
查看>>
实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣
查看>>
e297: write error in swap file
查看>>
并发错误:事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品...
查看>>
如何获取用户的地理位置-浏览器地理位置(Geolocation)API 简介
查看>>
如何在Solr中实现多core查询
查看>>
Ubuntu下搭建Hyperledger Fabric v1.0环境
查看>>
EventBus 3.0使用详解
查看>>
Linux curl 一例
查看>>
重写自己,减少判断 ---- 引发的思考
查看>>
【docker】【redis】1.docker安装redis【单点redis服务】
查看>>
Oracle数据库导入导出 imp/exp备份还原
查看>>
react-native-storage + AsyncStorage 实现数据存储
查看>>
Cobaltstrike、armitage联动
查看>>
pandas set_index和reset_index的用法
查看>>
[Bash] View Files and Folders in Bash
查看>>
PEACHPIE 0.9.11 版本发布,可以上生产了
查看>>
异常检测——局部异常因子(Local Outlier Factor ,LOF)算法
查看>>
记录一次广州白云区项目数据库连接失败问题的解决过程
查看>>
干货:Vue粒子特效(vue-particles插件)
查看>>