Comments (9)
Can you give an example of what/how you see this being provided?
from glue.
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.
from glue.
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).
from glue.
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.
from glue.
@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?
from glue.
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.
from glue.
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.
from glue.
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!
from glue.
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.
from glue.
Related Issues (20)
- How can I use standard modules as plugins? HOT 4
- how do you pass in concurrent option to hapi? HOT 4
- Should we have a "ISSUE_TEMPLATE.md" for Glue? HOT 1
- How should I use routes in server config (failAction). HOT 3
- Add hook to transform plugin list before registration HOT 17
- Integration with webpack - dynamic import issue HOT 4
- Make hapi a peer dependency HOT 7
- Error: Cannot start server before plugins finished registration HOT 4
- Using glue with hapi-mongoose HOT 5
- server.events is undefined after glue compose HOT 5
- Server options load support? Migrating from hapi 16 -> 17 HOT 6
- Change module namespace HOT 1
- Change module namespace for v5 branch HOT 1
- Server cache options in hapi 18 cannot be passed HOT 3
- Action required: Greenkeeper could not be activated π¨ HOT 1
- Update deps HOT 1
- Update joi HOT 1
- Add typescript type definitions HOT 2
- Only node 12
- No way of passing default route validator to glue HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glue.