使用Hapi.js框架的多个服务器实例

Maz*_*zzy 7 javascript plugins hapijs

由于几个原因,我正在接近node.js的这个框架.简单,出色的模块化和开箱即用的快速配置.我很快就遇到了Pack的概念,这是我在学习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);
    });
});
Run Code Online (Sandbox Code Playgroud)

他们说包装:

包是hapi将多个服务器组合到一个单元中的一种方式,用于在使用插件时提供统一的界面.

这个概念对我来说很奇怪.我们在项目中使用不同服务器的次数是多少次?另外我不清楚我是否应该每次调用打包在hapi中插件.

更新:这是v8之前的api代码,注册插件的方式已经改变.(register直接打电话server)

Ger*_*osi 4

这个概念对我来说很奇怪。我们在一个项目中使用不同的服务器有多少次?

一个例子是当您有一个 API 和一个 Web 服务器时。这些通常是单独开发的,通常在单独的存储库中。然后,您可以创建结合这些插件的第三个项目:

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();
});
Run Code Online (Sandbox Code Playgroud)

另外我不清楚我是否应该调用ever time pack在hapi中注册插件。

pack.register()是的,当你想注册插件时,你需要调用。但是您可以一次注册更多插件:

plugin.register([
  require('crumb'),
  require('hapi-auth-cookie')
], function (err) {
  // Error handling
}
Run Code Online (Sandbox Code Playgroud)