3 Reaction::Manual::Intro - Introduction to Reaction
7 Reaction is basically an extended MVC:
13 DBIx::Class::Schema, MyApp::Foo, MyApp::Bar, etc.
17 InterfaceModel::DBIC::Schema, InterfaceModel::Action,
18 MyApp::InterfaceModel::Foo classes.
22 Mediation and navigation.
26 Event handling encapsulation.
34 MyApp::View:: classes, renders viewports.
38 =head1 THE REACTION WAY
40 The idea is you separate your domain model, which encapsulates the domain
41 itself from your interface model, which is a model of how a particular app or
42 class of apps interact with that domain and provides objects/methods to
43 encapsulate the common operations it does.
45 =head2 Domain Models vs Interface Models
47 Domain models are expected to drive the application business logic and data.
48 All domain models that need to be effectively displayed somehow at the user
49 interface (a table, for instance) must interact with an interface model.
50 These should provide the common methods needed in order to carry out
51 user-generated events.
53 =head1 SETTING UP A REACTION APPLICATION
55 Reaction applications are set up just like Catalyst:
63 Reaction provides a reflector component which automagically
64 maps a L<DBIx::Class::Schema> into a set of Interface Models which can be used
65 by Reaction to build the interface components. If you're not familiar with
66 L<DBIx::Class> or don't have a schema handy, now is a good time to go through
67 L<DBIx::Class::Manual::Intro> to get a schema set up.
69 package MyApp::InterfaceModel::DBIC;
71 use base 'Reaction::InterfaceModel::Object';
72 use Reaction::InterfaceModel::Reflector::DBIC;
74 my $reflector = Reaction::InterfaceModel::Reflector::DBIC->new;
76 $reflector->reflect_schema(
77 model_class => __PACKAGE__,
78 schema_class => 'MyApp::Schema',
79 sources => [qw/Foo Baz/],
86 Your Reaction application must have a Root controller which inherits from
87 C<Reaction::UI::Controller::Root>.
89 package MyApp::Controller::Root;
93 use base qw/Reaction::UI::Controller::Root/;
97 window_title => 'My Reaction App',
113 =item * L<Reaction::Manual::Cookbook>
115 =item * L<Reaction::Manual::FAQ>
121 See L<Reaction::Class> for authors.
125 See L<Reaction::Class> for the license.