7

いくつかの理由から、node.js のこのフレームワークに近づいています。シンプルさ、優れたモジュール性、箱から出してすぐに使える素早い設定。Express.jsフレームワークを学んでいるうちに、見たことのないパックの概念にすぐに出会いました。公式ガイドからの次の例:

var Good = require('good');

server.pack.register(Good, function (err) {
    if (err) {
        throw err; // something bad happened loading the plugin
    }

    server.start(function () {
        server.log('info', 'Server running at: ' + server.info.uri);
    });
});

彼らはパックについて次のように述べています。

パックは、hapi が複数のサーバーを 1 つのユニットに結合する方法であり、プラグインを操作するときに統一されたインターフェイスを提供するように設計されています。

この概念は私にとって奇妙です。プロジェクト内で異なるサーバーを何回使用しますか? さらに、hapi にプラグインを登録するたびに pack を呼び出す必要があるかどうかは明確ではありません。

更新:これは v8 より前の API コードで、プラグインの登録方法が変更されました。register( で直接呼び出しますserver)

4

4 に答える 4

4

この概念は私にとって奇妙です。プロジェクト内で異なるサーバーを何回使用しますか?

1 つの例は、API と Web サーバーがある場合です。これらは通常、別々に開発され、多くの場合別々のリポジトリで開発されます。次に、これらのプラグインを組み合わせた 3 番目のプロジェクトを作成できます。

var Hapi = require('hapi');

var manifest = {
  servers: [
    {
      host: 'localhost',
      port: 8000,
      options: {
        labels: 'api',
        cors: true
      }
    },
    {
      host: 'localhost',
      port: 8001,
      options: {
        labels: 'web'
      }
    }
  ],
  plugins: {
    './example-api': [{select: 'api'}],
    './example-web': [{select: 'web'}]
  }
};

Hapi.Pack.compose(manifest, function(err, pack) {
  pack.start();
});

さらに、hapi にプラグインを登録するために time pack を呼び出す必要があるかどうかは明確ではありません。

はい、pack.register()プラグインを登録したいときに呼び出す必要があります。ただし、一度に複数のプラグインを登録できます。

plugin.register([
  require('crumb'),
  require('hapi-auth-cookie')
], function (err) {
  // Error handling
}
于 2014-08-17T02:00:31.730 に答える
2

リンクにアクセスしてください: http://cronj.com/blog/hapi-mongoose

レポ リンクに役立つサンプル プロジェクト: https://github.com/gauravgupta90/Hapi-Mongoose-Angular

8.x より前のバージョンの hapi の場合

var server = Hapi.createServer(host, port, {
    cors: true
});

server.start(function() {
    console.log('Server started ', server.info.uri);
});

ハピ新バージョン用

var Hapi = require('hapi');

var server = new Hapi.Server();
server.connection({ port: app.config.server.port });
于 2015-02-22T20:29:01.617 に答える
1

Hapi.Pack()最新バージョンの Hapi (8.x) では使用できなくなりました。彼らは機能を Glue と呼ばれる小さなライブラリに引き出しました。ここで見つけることができます: https://github.com/hapijs/glue。それは、以前とまったく同じように機能Hapi.Pack()します。

于 2015-01-13T17:21:01.997 に答える