我想創建一個插件來爲HapiJS中的靜態文件提供服務。我的文件結構如下HapiJS - 靜態文件
|_ plugins
| |_ assets
| |_ assets.js
| |_ package.json
| |_ views
|_ public
| |_ css
|app.js
| config.json
| package.json
在我的插件/資產/ 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,但開始時自己完全可以自己提供 –