J'essaie de créer un plugin pour servir mes fichiers statiques dans HapiJS. Ma structure de fichier est le suivantHapiJS - Static Files
|_ plugins
| |_ assets
| |_ assets.js
| |_ package.json
| |_ views
|_ public
| |_ css
|app.js
| config.json
| package.json
Dans mes plugins/assets/assets.js fichier Je le code suivant:
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');
}
Dans mon fichier config.json (colle manifeste):
{
"server": {
"app": {
"slogan": "We push the web forward"
}
},
"connections": [
{
"port": 3000,
"labels": ["web-ui"]
}
],
"registrations": [
{"plugin": "vision"},
{"plugin": "inert"},
{"plugin": "glue"},
{"plugin": "./plugins/assets"}
]
}
Et enfin, dans mes 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');
});
});
Ma question est la bonne façon de servir les fichiers statiques en utilisant une approche de plugins avec de la colle? Tous les exemples que j'ai vus n'utilisent pas une approche de plugin et emploient plutôt le server.register() dans le fichier app.js pour servir les fichiers statiques du répertoire public.
Votre approche est correcte, si vous souhaitez traiter vous-même les fichiers actifs et statiques. Vous économisez avec votre configuration et votre approche, il n'est pas nécessaire de déplacer immédiatement tous vos actifs vers un CDN. Au cours d'une phase de développement ultérieure, vous pouvez migrer vers un CDN, mais il est tout à fait possible de le faire vous-même. –