Clientseitiges JavaScript und serverseitige Daten

27. März 2018

Ein Vorteil von clientseitigem JavaScript gegenüber "berechneten" Scripts im Template code ist, daß er aufgrund seiner statischen Natur optimal vom Browser gecachet werden kann.

Ein Nachteil dagegen ist, daß das Script dann keine Informationen über Daten auf dem Server enthalten kann.

Für dieses Problem bietet womodo 7.5.3 nun eine Lösung.

Nehmen wir an, wir benötigen eine Infomation in JavaScript, die eigentlich nur auf dem Server vorhanden ist. Dann war man bisher darauf angewiesen, diese Information in einem <script>-Block im Template Code zu übermitteln.

<script>
var CMS = {version: "<tml:script expression="WGA.server().version"/>"}
</script>

Das ist nicht nur schwer zu lesen, weil hier clientseitiges und serverseitiges Script gemischt werden. Es ist auch gängige Praxis, auf <script>...</script> Blöcke innerhalb von HTML zu verzichten und statt dessen JavaScript in einer einzigen JS-Datei zur Verfügung zustellen.

Mit Hilfe des JSMin-Prozessors in womodo gibt es aber eine Alternative.

Der JSMin Prozessor besitzt das Feature, per @import mehrere JS-Resourcen zu einer einzigen zu vereinen, die dann zentral included werden kann. In womodo 7.5.3 können in diesem Prozess nun auch TMLScript Resourcen verarbeitet werden.

Beispiel:

// sample.jsmin
var CMS = 
//@import type=tmlscript get-version

// get-version.tmlscript:
return {
    version: WGA.server().version
}

// resulting JS-Code
var CMS = 
{"version": "7.5.3 Build 669"}

Auf diese Weise kann mittels TMLScript auf serverseitige Daten zugegriffen und diese dem clientseitigen Script zur Verfügung gestellt werden. Im HTML existiert weiterhin nur ein einziger JS-Include

<html>
<head>
<script src="<tml:url type="js" name="sample"/>"></script>
</head>
...
</html>

Mehr zu diesem Feature finden Sie im womodo Issue Tracker.