HapiJS - 静态文件

时间:2017-05-30 19:12:34

标签: node.js hapijs

我正在尝试创建一个插件,用于在HapiJS中提供我的静态文件。我的文件结构如下

|_ plugins
|  |_ assets
|    |_ assets.js
|    |_ package.json 
|  |_ views
|_ public
|  |_ css
|app.js
| config.json
| package.json

在我的plugins / assets / assets.js文件中,我有以下代码:

const Inert = require('inert');

exports.register = function(server, options, next) {

    server.register('inert');

    server.route({
        method: 'GET',
        path: '/{public}',
        handler: {
            directory: {path: '../../public'}
        }
    });

    next();
};

exports.register.attributes = {
    pkg: require('./package');
}

在我的config.json文件中(粘合清单):

{
  "server": {
    "app": {
      "slogan": "We push the web forward"
    }
  },
  "connections": [
    {
      "port": 3000,
      "labels": ["web-ui"]
    }
  ],
  "registrations": [
    {"plugin": "vision"},
    {"plugin": "inert"},
    {"plugin": "glue"},
    {"plugin": "./plugins/assets"}
  ]
}

最后,在我的app.js中:

var Hapi = require('hapi');
var Glue = require('glue');

var manifest = require('./config.json');

const options = {
    relativeTo: __dirname
};

Glue.compose(manifest, options, function (err, server) {
    server.start(function(err) {
        console.log('Server running');
    });
});

我的问题是这是使用胶水插件方法提供静态文件的正确方法吗?我见过的所有示例都不使用插件方法,而是使用app.js文件中的server.register()来提供公共目录中的静态文件。

1 个答案:

答案 0 :(得分:2)

从节点提供静态文件的最佳方式是:不要。

CDN是非常优选的:

  • CDN会根据发送的每TB数收取费用。

  • 云计算实例会按正常运行时间向您收费。

每月,对于常规申请,这些差额大约为数千美元。

在开发环境中,如果没有CDN,您可以从nginx等常规Web服务器提供文件。由于nginx包含在大多数发行版中,因此它的工作量也较少。

此外还有性能方面的考虑因素,您希望尽可能快地保留应用程序服务器。