Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/awncorp/mojo-component

Module-based Component Renderer
https://github.com/awncorp/mojo-component

component mojo mojolicious perl perl5 templating

Last synced: 25 days ago
JSON representation

Module-based Component Renderer

Awesome Lists containing this project

README

        

NAME

Mojolicious::Plugin::Component - Module-based Component Rendering

ABSTRACT

Module-based Component Rendering Plugin

SYNOPSIS

package App;

use Mojo::Base 'Mojolicious';

package App::Component::Image;

use Mojo::Base 'Mojolicious::Component';

has alt => 'random';
has height => 126;
has width => 145;
has src => '/random.gif';

1;

# __DATA__
#
# @@ component
#
# <%= $component->alt %>

package main;

my $app = App->new;

my $component = $app->plugin('component');

my $image = $app->component->use('image');

my $rendered = $image->render;

DESCRIPTION

This package provides Mojolicious module-based component rendering
plugin.

INHERITS

This package inherits behaviors from:

Mojolicious::Plugin

METHODS

This package implements the following methods:

register

register(InstanceOf["Mojolicious"] $app, Maybe[HashRef] $config) : Object

The register method registers one or more component builders in the
Mojolicious application. The configuration information can be provided
when registering the plugin by calling plugin during setup, or by
specifying the data in the application configuration under the key
component. By default, if no configuration information is provided the
plugin will register a builder labeled use which will load components
under the application's Component namespace.

register example #1

package main;

use Mojolicious::Plugin::Component;

my $app = Mojolicious->new;

my $component = Mojolicious::Plugin::Component->new;

$component = $component->register($app);

register example #2

package main;

use Mojolicious::Plugin::Component;

my $app = Mojolicious->new;

my $component = Mojolicious::Plugin::Component->new;

$component = $component->register($app, {
v1 => 'App::V1::Component',
v2 => 'App::V2::Component',
});

# my $v1 = $app->component->v1('image');
# my $v2 = $app->component->v2('image');

register example #3

package main;

use Mojolicious::Plugin::Component;

my $app = Mojolicious->new;

my $component = Mojolicious::Plugin::Component->new;

$component = $component->register($app, {
v1 => 'App::V1::Component',
v2 => 'App::V2::Component',
});

# my $v1 = $app->component->v1('image' => (
# src => '/random-v1.gif',
# ));

# my $v2 = $app->component->v2('image' => (
# src => '/random-v2.gif',
# ));

AUTHOR

Al Newkirk, [email protected]

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under
the terms of the The Apache License, Version 2.0, as elucidated in the
"license file"
.

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues