Closed jamesdixon closed 9 years ago
Can you give an example of what/how you see this being provided?
Example:
// methods/add.js
module.exports = function(a, b, next) {
return next(null, a + b);
};
And then in the Glue manifest:
...
methods: {
"./add": {}
}
...
However, given that server methods don't take any configuration options, it might be a better solution to just allow for a specified directory containing your server methods to be loaded automatically via server.methods()
.
All that said, I realize this is just pure convenience, but it would be cool to handle server methods in the same way plugins are registered.
Couldn't you just put your server methods inside a plugin and load that? If you start allowing server methods in the manifest separately, just wondering where this would end (routes, extensions too etc).
I think server methods should be registered from within a plugin. Heck, you could write a reusable plugin that takes server methods as options, and simply register them with a caching policy.
@mtharrison @devinivy sure, registering them within a plugin is certainly a valid option. There's potentially a lot of things that can be done in a plugin, but the question is whether or not it's the right place to do it.
@mtharrison with regards to your comment about "where would this end," it's a good question and maybe the question that needs to be answered before deciding what can and cannot be configured via Glue. A lot of it is convenience, right? With that said, I'd be perfectly OK with being able to point to my routes file rather than adding another line to my server.js
file. I suppose it all depends. Thoughts?
Obviously this is a subjective matter but I really like the idea that the plugin is the single unit of modularity in hapi. Kind of a container for whatever else you want to put in there. A plugin can be as complex (containing routes, methods, extensions, views etc etc) or as simple (containing a single route for instance) as you need. Glue is really simple in the sense that it just sticks plugins together and kind of sandboxes them to some extent (realm/modifiers etc).
To allow Glue to start configuring other things that could be inside plugins as external things seems to complicate matters and dilute this simple model. Not to mention it doesn't seem to buy any more convenience really as a plugin is so little overhead to create.
Thanks, @mtharrison. I admit my experience with Hapi is still limited, so I was thinking of plugins as being something that handled more complex behavior, not necessarily creating routes or registering server methods. That said, I think the points you made are good ones.
Thanks for the insights.
I highly suggest using plugins for routes, server methods, server extensions, etc. Think of a plugin as a little sliver of a server. A plugin could be just a few lines of code– using them for small bits of your server is encouraged!
This thread has been automatically locked due to inactivity. Please open a new issue for related bugs or questions following the new issue template instructions.
Was wondering if there was any interest/plans in support for registering server methods in the Glue manifest? It's great to be able to register plugins in this fashion and similarly be great to handle server methods in a similar manner.