The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Quiq::Html::Component - Eigenständige Komponente einer HTML-Seite

BASE CLASS

Quiq::Hash

SYNOPSIS

use Quiq::Html::Component;

# Instantiiere Objekt

$c = Quiq::Html::Component->new(
    name => $name
    resources => \@resources,
    css => $css | \@css,
    html => $html | \@html,
    js => $js | \@js,
    ready => $js | \@js,
);

# Frage Eigenschaften ab

$name = $c->name;
@resources = $c->resources;
$css | @css = $c->css;
$html | @html = $c->html;
$js | @js = $c->js;
$ready | @ready = $c->ready;

# Generiere HTML-Fragment

$h = Quiq::Html::Tag->new;
$html = $c->fragment($h);

DESCRIPTION

Ein Objekt der Klasse repräsentiert eine eigenständige Komponente einer HTML-Seite bestehend aus HTML-, CSS- und JavaScript-Code (normaler Code und jQuery ready-Handler). Der Zweck besteht darin, diese Bestandteile zu einer logischen Einheit zusammenzufassen. Die Bestandteile können über Methoden der Klasse abgefragt werden, um sie systematisch in die unterschiedlichen Abschnitte einer HTML-Seite (<head>, <body>, <style>, <script>, $(function() {...})) einsetzen zu können. Die Resourcen mehrerer Komponenten (Attribut resources) können zu einer Liste ohne Dubletten konsolidiert werden. Dies ist allerdings Aufgabe des Nutzers bzw. der Klasse Quiq::Html::Component::Bundle. Ein Objekt der Klasse speichert die einzelnen Bestandteile lediglich, die Methoden manipulieren diese nicht. Einzig die Methode fragment() führt eine Verarbeitung durch, indem sie zusammenfassenden HTML-Code über allen Komponenten generiert.

METHODS

Konstruktor

new() - Instantiiere Objekt

Synopsis

$c = $class->new(@keyVal);

Attributes

Alle Attribute außer name können mehrfach angegeben werden.

name => $name

Name der Komponente. Unter diesem Namen kann die Komponente aus einem Bündel von Komponenten ausgewählt werden. Siehe Quiq::Html::Bundle.

resources => \@resources

Liste von Resourcen (CSS- und JavaScript-Dateien), die von der Komponente benötigt werden. Eine Resource wird durch ihren URL spezifiziert. Es sollte eine einheitliche Schreibweise über mehreren Komponenten verwendet werden, damit die Resource-Listen konsolidiert werden können.

css => $css | \@css

Der CSS-Code der Komponente. Besteht der CSS-Code aus mehreren Teilen, kann das Attribut mehrfach oder eine Array-Referenz angegeben werden.

html => $html | \@html (Default: '')

Der HTML-Code der Komponente. Besteht der HTML-Code aus mehreren Teilen, kann das Attribut mehrfach oder eine Array-Referenz angegeben werden.

js => $js | \@js

Der JavaScript-Code der Komponente. Besteht der JavaScript-Code aus mehreren Teilen, kann das Attribut mehrfach oder eine Array-Referenz angegeben werden.

ready => $js | \@js

Der Ready-Handler der Komponente. Gibt es mehrere Ready-Handler kann das Attribut mehrfach oder eine Array-Referenz angegeben werden.

Description

Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.

Objektmethoden

css() - CSS-Code der Komponente

Synopsis

$css | @css = $c->css;

Description

Liefere den CSS-Code der Komponente. Im Arraykontext die Liste der Array-Elemente, im Skalarkontext deren Konkatenation.

fragment() - Generiere HTML

Synopsis

$html = $c->fragment($h);
$html = $class->fragment($h,@keyVal);

Description

Generiere den Frament-Code der Komponente und liefere diesen zurück. Als Klassenmethode gerufen, wird das Objekt intern erzeugt und mit den Attributen @keyVal instantiiert.

Der Fragment-Code besteht aus dem HTML-, CSS- und JavaScript-Code der Komponente. Anwendungsfall ist z.B. eine Ajax-Antwort, die in ein bestehendes HTML-Dokument eingebettet wird.

Der generierte Code hat den Aufbau:

<RESOURCEN LADEN>
<STYLE CODE>
<HTML CODE>
<JAVASCRIPT CODE>

html() - HTML-Code der Komponente

Synopsis

$html | @html = $c->html;

Description

Liefere den HTML-Code der Komponente. Im Arraykontext die Liste der Array-Elemente, im Skalarkontext deren Konkatenation.

js() - JavaScript-Code der Komponente

Synopsis

$js | @js = $c->js;

Description

Liefere den JavaScript-Code der Komponente. Im Arraykontext die Liste der Array-Elemente, im Skalarkontext deren Konkatenation.

name() - Name der Komponente

Synopsis

$name = $c->name;

Description

Liefere den Namen der Komponente.

ready() - Ready-Handler der Komponente

Synopsis

$ready | @ready = $c->ready;

Description

Liefere den/die Ready-Handler der Komponente. Im Arraykontext die Liste der Array-Elemente, im Skalarkontext deren Konkatenation.

resources() - Resourcen der Komponente

Synopsis

@resources | $resourceA = $c->resources;

Returns

Liste der Resource-URLs. Im Skalarkontext eine Referenz auf die Liste.

Description

Liefere die Liste der Resource-URLs der Komponente.

Private Methoden

getValue() - Liefere Attributwert

Synopsis

@arr | $str = $obj->getValue($key);

Description

Liefere den Wert des Attributs $key. Im Arraykontext die Liste der Array-Elemente, im Skalarkontext deren Konkatenation.

putValue() - Setze Attributwert oder füge ihn hinzu

Synopsis

$obj->putValue($key=>$val);

Description

Setze den Wert $val des Attributs $key oder füge ihn hinzu.

VERSION

1.220

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.