zoukankan      html  css  js  c++  java
  • HapiJS开发手冊

    HapiJS开发手冊
    作者:chszs。转载需注明。博客主页:http://blog.csdn.net/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) 


  • 相关阅读:
    欣喜:终于找到了办法,可以把图片资源集成到dll文件之中了
    复习:关于类的继承和构造函数
    让Fckeditor支持中文——解决“Error loading "/fckeditor/fckstyles.xml" ”
    asp.net小技巧:保留password模式文本框textbox内的数据不丢失。
    数据库备份和恢复速记!
    资源:全球化与本地化(二)——指定语言语种
    一个Javascript类URI,顺便当作学习js类的笔记了。
    学习笔记:TimeSpan(时间片),以及各种时间差的算法
    ASP.NET MVC数据验证
    反射和属性
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5172061.html
Copyright © 2011-2022 走看看