Giter VIP home page Giter VIP logo

Comments (9)

csrl avatar csrl commented on May 29, 2024

Can you give an example of what/how you see this being provided?

from glue.

jamesdixon avatar jamesdixon commented on May 29, 2024

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.

mtharrison avatar mtharrison commented on May 29, 2024

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.

devinivy avatar devinivy commented on May 29, 2024

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.

jamesdixon avatar jamesdixon commented on May 29, 2024

@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.

mtharrison avatar mtharrison commented on May 29, 2024

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.

jamesdixon avatar jamesdixon commented on May 29, 2024

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.

devinivy avatar devinivy commented on May 29, 2024

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.

lock avatar lock commented on May 29, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.