Help language development. Donate to The Perl Foundation
use Hiker; my $app = Hiker.new( hikes => ['controllers', 'models'], templates => 'templates', ); $app.listen;
Pretty easy, right?
hikes => ['controllers', 'models'],
hikes
are the directories where Hiker
should look for any pm6|pl6
files and check for anything resembling a Hiker::Route|Hiker::Model
. Since we all love organization, this parameter accepts an array so you can split your models and controllers.
The Hiker::Route
s found in these directories are sorted by the type of path (Regex
vs Str
) and Str
s without optional parameters (see HTTP::Server::Router
) are given highest priority, then optional param strings, and then regexes.
templates => 'templates',
Hiker::Route
a controllerThis role lets Hiker
know what this class does. Boilerplate class (controller) would look like the following:
use Hiker::Route; class MyApp::Basic does Hiker::Route { has $.path = '/'; # can also be a regex, eg: /.+/ has $.template = 'basic.mustache'; has $.model = 'MyApp::Model'; #this is an optional attribute method handler($req, $res) { True; } }
Note, returning the True
value auto renders whatever the $.template is.
Hiker::Model
a modelThis role lets Hiker
know what this class does. Boilerplate class (model) would look like the following:
use Hiker::Model; class MyApp::Model does Hiker::Model { method bind($req, $res) { $res.data<data> = qw<do some db or whatever stuff here>; } }
# hiker init
This will create a boilerplate application for you in the current directory
# perl6 app.pl6
This will run your webapp in localhost:8080
Hiker
runs through all of the routes it found on startupTrue
(or a Promise whose result is True
) value is returnedHiker
uses Template::Mustache
. If the .template
specified by the route doesn't exist then a default 404
message is shown to the user.
For the time being this isn't configurable
weight
attribute to the routes so Regex order can be handled better