Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why?
So far, we've been creating a local controller object manually for each individual route plugin. It is a process that has to be repeated for every new route plugin that is added to the app.
This patch proposes the addition of a
controllers
plugin that decorates theserver
object with a.controllers()
method. The method generates an object representation of theapp/controllers
folder, which simplifies the process of writing route plugins.I believe that this approach is superior to the current one in two regards:
cousin import
. (where controllers were require()'d by going up a directory and then into another sub directory)cousin imports are a code smell, since ideally all imports should be from siblings and decendents, not from cousin or parents.
Considerations
some area's of concern:
require()
'd were available. However in the new system, all controllers will be available. This goes against the principle of least privilege. Although that won't be the end of the worldjolly
doesn't have an express philosophy, while this might not be breaking any conventions, it does add to the pile.