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 (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.208

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2023 Frank Seitz

LICENSE

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