【问题标题】:HapiJS - Static FilesHapiJS - 静态文件
【发布时间】:2017-05-30 19:12:34
【问题描述】:

我正在尝试创建一个插件,用于在 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() 来提供公共目录中的静态文件。

【问题讨论】:

  • 如果您想自己提供资产和静态文件,您的方法很好。您可以保存配置和方法,无需立即将所有资产移动到 CDN。在以后的开发阶段,您可以迁移到 CDN,但开始时自己为他们服务完全没问题

标签: node.js hapijs


【解决方案1】:

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

CDN 是非常可取的:

  • CDN 向您收取每 TB 发送的费用。

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

按月计算,对于常规申请,两者之间的差额在数千美元左右。

在开发环境中,在没有 CDN 的情况下,您可以从常规 Web 服务器(如 nginx)提供文件。它的工作量也更少,因为大多数发行版都打包了 nginx。

这也有性能考虑,您希望让您的应用程序服务器尽可能快。

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-12-23
    • 2021-05-28
    • 2019-03-05
    相关资源
    最近更新 更多