buffalo icon indicating copy to clipboard operation
buffalo copied to clipboard

make the `App` the root of whole application and introduce `Home` as a subapp

Open sio4 opened this issue 3 years ago • 0 comments

The name App sounds like the only root of the application structure (could be a singleton) but actually, it is also a container of a group of URLs that is independently configurable with middlewares and error handlers. The App.Group() and App.Resource() return a new App which is a child of the root App, it's OK, but they have the whole functions of App which is not desirable.

By #2226, a quick fix for #2185, I changed some of the internal implementations of App while keeping the external behavior the same, but there are still some issues caused by the current design. Since we are now discussing v1, the future of buffalo, so I would like to suggest that we keep this structure for the current version and improve the core when we move to the next version.

TODO

  • make the Home the container of a group of URLs and its independent middlewares and error handlers (half done)
  • make Home as a child of the App.
  • make App as a singleton (but we need more consideration for this since it is not always a good thing.)

Context

  • #2239
  • #2226
  • #2222
  • #2185
  • #1653

sio4 avatar Apr 17 '22 15:04 sio4