On Apr 22, 2015, at 6:42 PM, David H <[email protected]> wrote:
>
> What is the best way to separate these code bases into separate files?
Dancer makes this really easy. The ‘dancer’ generator already created a “lib”
directory for you and added it to the module path. By default, that lib
directory only holds myapp.pm, but there’s nothing preventing you from adding
more files to that tree.
For my app (which has about 5x the amount of Perl code you’re talking about) I
chose to keep lib/myapp.pm as the “Dancer core” module, containing little more
than the route handlers.
Those route handlers are mostly one-liners that call off into one of the other
modules which live in lib/myapp/*.pm.
At the top of lib/myapp.pm, you see a bunch of stuff like:
use myapp::SomeComponent;
use myapp::AnotherComponent;
use etc…
Those modules then export classes, functions, and globals in the normal way,
for use by the Dancer core module.
Sometimes I write these modules to require fully-qualified names rather than
export function to global level. A route handler thus might look like this:
prefix '/api' => sub {
prefix '/sc' => {
get ‘foo’ => sub {
return myapp::SomeComponent::GetFoo(param ‘bar’);
};
};
};
If you didn’t know you could nest things with “prefix” this way, aren’t you
glad you know now? :)
As you can see, I’m mirroring my Perl module component hierarchy with my URL
hierarchy: /api/sc/* is handled by myapp::SomeComponent, etc.
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users