Node.js开源应用框架HapiJS介绍_node.js

一、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, %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)

时间: 2024-11-03 10:51:32

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

最流行的Node.js精简型和全栈型开发框架介绍_node.js

快速开发而又容易扩展,高性能且鲁棒性强.Node.js的出现让所有网络应用开发者的这些梦想成为现实.但是,有如其他新的开发语言技术一样,从头开始使用Node.js的最基本功能来编写代码构建应用是一个非常划不来的耗时的事情.这个问题的解决方案非常简单且已经经受起时间的考验:使用一个已经提前打造好的开发框架.因此才会有如此多的如Express.js,Koa,Sails.js等框架的概念提出来并加以实现. 这些开发框架的角色非常简单.就是要去为应用开发人员节省时间,让我们不用话费太多精力在一些不必要的

用C/C++来实现 Node.js 的模块(二)_node.js

温故而知新,可以为湿矣 首先请大家记住这个 V8 的在线手册--http://izs.me/v8-docs/main.html. 还记得上次的 building.gyp 文件吗? 复制代码 代码如下: {   "targets": [     {       "target_name": "addon",       "sources": [ "addon.cc" ]     }   ] }   就像这样,

Node.js异步I/O学习笔记_node.js

"异步"这个名词的大规模流行是在Web 2.0浪潮中,它伴随着Javascript和AJAX席卷了Web.但在绝大多数高级编程语言中,异步并不多见.PHP最能体现这个特点:它不仅屏蔽了异步,甚至连多线程也不提供,PHP都是以同步阻塞的方式来执行.这样的优点利于程序猿顺序编写业务逻辑,但在复杂的网络应用中,阻塞导致它无法更好地并发. 在服务器端,I/O非常昂贵,分布式I/O更加昂贵,只有后端能快速响应资源,前端的体验才能变得更好.Node.js是首个将异步作为主要编程方式和设计理念的平台

node.js插件nodeclipse安装图文教程_node.js

在eclipse插件中,node.js插件中比较知名的是nodeclipse,本文为大家介绍了nodeclipse安装教程,供大家参考,具体内容如下 安装nodeclipse 1. 依次点击工具→插件安装→浏览eclipse插件市场→搜索node.js→在搜索结果里找nodeclipse如下图 2.点击上图中的install开始加载,加载完毕点下一步接受许可协议静待安装完成即可 3. 安装完毕后重启HBuilder 4. 新建node项目:依次点击菜单文件→新建→其他如下图 5.选择要新建的no

总结Node.js中的一些错误类型_node.js

前言 Node.js应用中可能会发生多种类型的错误.如:当出现语法错误或运行时错误时,会触发JavaScript错误:当试图试访问一个不存在或没有访问的文件时,会触发系统错误:除JavaScript错误和系统错误错误外,用户还可以自定义错误. 1. 错误分类 Node.js是一个JavaScript运行时平台,其应用发生错误都是一个Error实例或Error子类的实例. 在Node.js应用中,可能发生的错误有以下4类:      1.标准JavaScript错误,如:           <E

Node.js模块加载详解_node.js

JavaScript是世界上使用频率最高的编程语言之一,它是Web世界的通用语言,被所有浏览器所使用.JavaScript的诞生要追溯到Netscape那个时代,它的核心内容被仓促的开发出来,用以对抗Microsoft,参与当时白热化的浏览器大战.由于过早的发布,无可避免的造成了它的一些不太好的特性. 尽管它的开发时间很短,但是JavaScript依然具备了很多强大的特性,不过,每个脚本共享一个全局命名空间这个特性除外. 一旦Web页面加载了JavaScript代码,它就会被注入到全局命名空间,

Node.js的特点和应用场景介绍_node.js

Node.js应该是当今最火热的技术之一.本文主要介绍Node.js的特点及应用场景. Node.js是一个基于Chrome JavaScript运行时建立的一个平台,用来方便地搭建快速的 易于扩展的网络应用.Node.js借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合 运行在分布式设备的数据密集型实时应用. 1. 特点 1.1 异步I/O 所谓的异步I/O,是相对同步I/O而言的.程序执行过程中必然要进行很多I/O操作,如读写文件.输入输出.请求响应等等.通常来说,I/O操作是非常费时

充分发挥Node.js程序性能的一些方法介绍_node.js

 一个Node.JS 的进程只会运行在单个的物理核心上,就是因为这一点,在开发可扩展的服务器的时候就需要格外的注意. 因为有一系列稳定的API,加上原生扩展的开发来管理进程,所以有很多不同的方法来设计一个可以并行的Node.JS运用.在这篇博文里,我们就来比较下这些可能的架构. 这篇文章同时也介绍compute-cluster 模块:一个小型的Node.JS库,可以用来很方便的管理进程,从来二线分布式计算. 遇到的问题 我们在Mozilla Persona的项目中需要可以处理大量不同特征的请求,

node.js cookie-parser 中间件介绍_node.js

之前加入了一个学习笔记本群,通过学习笔记来分享学习成果.也在这里发一份吧. 当我们在写web的时候,难免会要使用到cookie,由于node.js有了express这个web框架,我们就可以方便地去建站.在使用express时,经常会使用到cookie-parser这个插件.今天我们来分析一下这个插件. 这个插件通常当作中间件使用,app.use(cookieParser()), 这样就可以处理每一个请求的cookie. 从名字上看,这就是一个解释Cookie的工具.通过req.cookies可