JavaScript
Namespaces
Zu beginn, als AMD noch nicht so populär war, hatten wir begonnen die Module/Klassen in einem Objekt Baum (oder auch Namespace) zu Deklarieren. Es wurde das von den OOP sprachen her kommende Namespace Sprachkonstrukt kopiert.
Der Namespace Pfad ist immer kleingeschrieben und der Name der Klasse in Camelcase form. Objekte von Klassen sind wiederum kleingeschrieben wenn sie im Namespace definiert werden.
fuman.User = createFjsClass({ ... }); fuman.user = new fuman.User();
Namespace zu Ordner Abildung
Ziel war, dass man auf alle Klassen auf verständliche Art und Weise (wie man es von der OOP Welt kennt) zugreifen kann. Die Namespaces spiegelen Teilweise die Ordnerstuktur wieder, womit über den Namespace Name auch der Ort der Datei bestimmt werden kann.
fuman.app.core.action.HelloWorld //Datei: admin/app/core/action/helloworld/assets/helloworld.js mootools //Ordner: admin/assets/js/mootools/ mootools.ext.animation //Datei: admin/assets/js/mootools/animation.js fuman //Ordner: admin/assets/js/fuman/ fuman.ext.FocusHandler //Datei: admin/assets/js/fuman/ext/focushandler.js fjs //Ordner: admin/assets/js/fjs/ fjs.util //Datei: admin/assets/js/fjs/util.js
Namespace/Klasse Definieren
Objekte oder Klassen werden nach dem AMD Style definiert. Dabei wird die funktion fjs.define verwendet.
//Definition einer Klasse ohne Abhängigkeiten fjs.define('namespace.welcher.die.ordnerstruktur.abbildet.und.KlassenNamen', function(){ return createFjsClass({ .... }) }; //Definition einer Klasse mit Abhängigkeiten: fjs.define('namespace.welcher.die.ordnerstruktur.abbildet.und.KlassenNamen' , ['namespace.klasse.Xyz', '...'] , function(geladeneKlasseXyz, ....) { return createFjsClass({ Extends: geladeneKlasseXyz .... }) };