The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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. Der Zweck besteht darin, diese einzelnen Bestandteile zu einer 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 können zu einer Liste ohne Dubletten konsolidiert werden, dies ist allerdings Aufgabe des Nutzers. Ein Objekt der Klasse speicher die einzelnen Bestandteile nur, sie manipuliert sie nicht (außer, dass im Skalarkontext Teile konkateniert werden).

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.178

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

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