一、HapiJS介绍

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

二、HapiJS安装和项目配置

1、安装Hapi库
HapiJS的安装很简单,执行如下命令:

$ 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, 张三!

可见,路由逻辑运行正常。

要注意:
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)

Node.js开源应用框架HapiJS介绍的更多相关文章

  1. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  3. Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

  4. node.js实现http服务器与浏览器之间的内容缓存操作示例

    这篇文章主要介绍了node.js实现http服务器与浏览器之间的内容缓存操作,结合实例形式分析了node.js http服务器与浏览器之间的内容缓存原理与具体实现技巧,需要的朋友可以参考下

  5. 教你如何使用node.js制作代理服务器

    本文介绍了如何使用node.js制作代理服务器,图文并茂,十分的详细,代码很简洁易懂,这里推荐给大家。

  6. node.js中的fs.openSync方法使用说明

    这篇文章主要介绍了node.js中的fs.openSync方法使用说明,本文介绍了fs.openSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

  7. Node.js+ELK日志规范的实现

    这篇文章主要介绍了Node.js+ELK日志规范的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. node.js爬虫框架node-crawler初体验

    这篇文章主要介绍了node.js爬虫框架node-crawler的相关资料,帮助大家利用node.js进行爬虫,感兴趣的朋友可以了解下

  9. node.js中的fs.existsSync方法使用说明

    这篇文章主要介绍了node.js中的fs.existsSync方法使用说明,本文介绍了fs.existsSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

  10. 说说如何利用 Node.js 代理解决跨域问题

    这篇文章主要介绍了Node.js代理解决跨域问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部