Javascript Snippets

Zusätzlich zu den Javascript Dateien, die mehr oder weniger statisch sind, werden zusätzliche Javascript-"Schnipsel" bzw. Snippets benötigt. (Die Behandlung von Javascript Dateien wurde bereits hier abgehandelt.) Mit diesen Snippets werden Jybrid oder andere Javascripte konfiguriert bzw. erweitert.

Die Snippets greifen während des Inita-Page-Load per normalen Request, also nicht während eines Ajax-Request-Response-Cycles!

Die Jybrid-Core-Scripte unterteilen sich in folgende Breiche:

Typ Name Kommentar
optionale Snippets beforeScriptUrls Hier kann, bevor die JS-Dateien ausgegeben werden, vorab noch irgendwelche "Loader-Snippets" eingefügt werden.
Core generateScriptUrls Bereitstellung der Javascript-Dateien
optionale Snippets beforeInitScript
Core generateInitScript Im Init-Script wird das Jybrid-Javascript konfiguriert. Die Konfiguration der Parameter erfolgt über \Jybrid\Factory::getInstance()->getConfig()
* optionale Snippets beforeEmitterScripts Javascript-Emitter-Scripts werden während des Init-Script Erstellung generiert
optionale Snippets beforeTimeoutScript Die Generierung der Snippets erfolgt(soweit gesetzt) auch wenn das TimeoutScript nicht verwendet wird!
optional Core generateTimeoutScript Die Generierung ist optional und eher ein Relikt aus Xajax-Zeiten
optionale Snippets beforePluginScripts
Core generatePluginScripts Es werden die Requests, die über die Plugins bereitgestellt werden generiert
optionale Snippets afterPluginScripts

Alle "optionalen Snippets" werden von Jybrid nicht vorbelegt. Hier hast du freie Hand deinen Zusatz-Quellcode einzubringen. Ob und in wie fern du diese optionalen Snippets verwendest bleibt natürlich dir überlassen. In großen unübersichtlichen Systemen wie Wordpress oder Joomla mit diversen Plugins/Modulen und vielen vielen Javascript-Dateien und anderen Snippets, können die optionalen Snippets hilfreich sein.

Example

beforeScriptUrls

$snippets = Factory::getSnippets();

$snippets->addSnippet(Snippets::beforeScriptUrls, 'console.log("load snippet ' . Snippets::beforeScriptUrls . '")');

beforeScriptUrls creates an separate script-tag

<script type="text/javascript" charset="UTF-8">/*<![CDATA[*/console.log("load snippet beforeScriptUrls");/*]]>*/</script>

beforeInitScript

$snippets->addSnippet(Snippets::beforeInitScript, 'console.log("load snippet ' . Snippets::beforeInitScript . '")');

beforeEmitterScripts

$snippets->addSnippet(Snippets::beforeEmitterScripts, 'console.log("load snippet ' . Snippets::beforeEmitterScripts . '")');

beforeTimeoutScript

$snippets->addSnippet(Snippets::beforeTimeoutScript, 'console.log("load snippet ' . Snippets::beforeTimeoutScript . '")');

beforePluginScripts

$snippets->addSnippet(Snippets::beforePluginScripts, 'console.log("load snippet ' . Snippets::beforePluginScripts . '")');

afterPluginScripts

$snippets->addSnippet(Snippets::afterPluginScripts, 'console.log("load snippet ' . Snippets::afterPluginScripts . '")');

Order of addSnippet()

Die Snippets können natürlich in unterschiedlicher Reihenfolge in Jybrid eingefügt werden. Dies ist insbesondere in Content Management Systemen hilfreich, da in CMS' keine lineare Code-Generierung und Ausgabe erfolgt.

Snippets result example

<script type="text/javascript" charset="UTF-8" defer="">
/*<![CDATA[*/

console.log("load snippet beforeScriptUrls");

/*]]>*/</script>

<script type="text/javascript" charset="UTF-8" src="/jybrid/src/assets/js/jybrid_core.js"></script>

<script type="text/javascript" charset="UTF-8">
/*<![CDATA[*/
console.log("load snippet beforeInitScript");
    try { if (undefined == typeof jybrid.config) jybrid.config = {};} catch (e) { jybrid = {}; jybrid.config = {};};
    jybrid.config.setOption('waitCursor',false);
    jybrid.config.setOption('version','jproof/jybrid 0.7.2') ;
    jybrid.config.setOption('defaultMode','asynchronous') ;
    jybrid.config.setOption('defaultMethod','POST') ;
console.log("load snippet beforeEmitterScripts");
    // @since 0.7.4 Emitter-Update
    jybrid.initialize();
console.log("load snippet beforeTimeoutScript");
    (function () {var jybridTO = window.setTimeout(function () {var scriptExists = false;try  {if (jybridIsLoaded) scriptExists = true; window.clearTimeout(jybridTO); } catch (e) {} ;
                                        if (!scriptExists) {
                    alert("Error: the Javascript component could not be included. Perhaps the URL is incorrect?\nURL:/jybrid/php/src/assets/js/jybrid_core.js");} },6000);}());
console.log("load snippet beforePluginScripts");
    jybrid.Reg('testing_post', function() {return jybrid.request( { jybreq: 'cms'},{parameters:arguments});});
console.log("load snippet afterPluginScripts");/*]]>*/
</script>

Notices

Es können jederzeit unendlich viele Snippets Jybrid hinzugefügt werden.

$snippets->addSnippet(Snippets::beforeInitScript, 'console.log("load snippet ' . Snippets::beforeInitScript . '")');
$snippets->addSnippet(Snippets::beforeInitScript, 'console.log("next snippet of the position ' . Snippets::beforeInitScript . ' was added")');

Alle addSnippets() Aufrufe müssen vor der Ausgabe des finalen generateClientScript() erfolgen.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Snippets Example | jybrid schematic</title>
    <?php echo \Jybrid\Scripts\Generator::generateClientScript(); ?>

@todo CMS situation