• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[DISKUSSION] Fancy

Mephiztopheles

New member
Hi Leute, ich hab mal wieder gebastelt und habe schon lange nix mehr geschrieben.
Ich hab' eine neue Version meines Frameworks veröffentlicht.

Auf meiner Seite sind so ziemlich alle vertreten. Nur die Dokumentation dürfte etwas spärlich sein.

Vielleicht hat einer von euch Bock mal meine Funktionen auszuprobieren und oder mitzuentwickeln und Feedback zu geben.
Ich will alles über github laufen lassen, wo ihr halt Bugreports und sowas erstellen könnt.
Dort findet ihr auch immer die aktuellsten Versionen.
Zusätzlich ist alles per Bower installierbar
 
Schwierig. Wofür braucht man ein weiteres Framework auf dieser Welt werden sich vielleicht einige fragen.
 
Die Ideen sind sicherlich ganz gut aber leider muss ich mein Vorredner Recht geben. Frameworks gibt es wie Sand am Meer und meist weit ausgereifter.

Bounce funktioniert bei mir z.B. garnicht. (getestet in Chrome)
Der Player erinnert zu sehr an Youtube. Da hätte ich mir eher was eigenes gewünscht.
Die Contextmenü Idee finde ich ganz interessant. Dafür werde ich mir aber kein weiteres Framework installieren. Da muss schon einiges mehr kommen.

Schön wäre, wenn z.B. wenn das Framework wie bei require.js aufgerufen wird und auch alle Vorzüge davon nutzen würde. Module für das Framework brauchen nur in ein ausgewählten Ordner geschmissen zu werden und laden sich dann von selbst. Solche Sachen halt. Themes, die einfach auf einer einzigen Zip Datei geladen werden. Ein Preloader für alle JS-Dateien, vielleicht sogar etwas in Kombination mit WebGL.

Hoffe, das sind genug Ideen, die man umsetzen könnte.
Wenn die Grundlagen stehen, kommen die restlichen Sachen von selbst.

Gruß,
Terra
 
Zuletzt bearbeitet:
Vielleicht ist Framework das falsche Wort...
Das ist halt ne Sammlung von mehreren Modulen, die über einen Befehl genutzt werden können
Zum Beispiel der Datepicker. Es gibt ja viele, ich weiß, aber ich habe die Idee das so allgemein wie möglich zu schreiben und der Benutzer kann so viel anpassen wie er will. und es soll mehr möglichkeiten für die Events geben, weil di meisten nicht genug events haben, die gefeuert werden, wenn eine Aktion ausgeführt wird.
Das Bounce auf der Webseite sollte wieder funktionieren, da habe ich damals alte Dateien eingebunden, die jetzt nicht mehr existieren.
Das Ganze soll ja nicht nur die Plugins bieten, sondern es ist ja so aufgebaut, dass jeder andere ganz einfach seine Programme da einbinden kann und das System von alleine nur eine Instanz pro Element anbieten (kann/wird) je nachdem wie der Programmierer das entscheidet.
mit require.js hab ich noch nie gearbeitet, aber das kann man ja alles nachholen. Ich denke das kann ich dann sogar so einbauen, dass das nicht in jedem Plugin definiert sein muss...
 
Hey,

also erstmal - nicht falsch verstehen. Es ist eine gute Arbeit. Wollte nichts schlecht reden oder so.

Nein, Framework entspricht genau das was du sagst. Eine Sammlung von mehreren Modulen. :) Aber wie man das Kind auch nennt. Es bleibt eine Funktionssammlung, die etwas erleichtern soll.

Beim durchstöbern deines Quelltextes ist mir sofort aufgefallen, das bei der Abfrage, ob JQuery geladen ist nur eine Fehlermeldung ausgespuckt wird. So lange der User nicht weis, das es (ich nenne es mal) ein Plugin für JQuery ist, wird es einigen aufstoßen, das nichts funktioniert. Anstelle eine Fehlermeldung würde ich an deiner Stelle JQuery dort über das Internet dynamisch mit reinladen. "J.FANCY" würde dem ganzen da auch besser stehen. ;)

Zum anderen würde ich mehr Objekt Orientierter arbeiten. Das vermindert Fehler extrem mit anderen Plugins, die es ja zu Millionen gibt.

Ich an deiner Stelle würde zuerst alles in einzelne Dateien Packen. Also jede Funktion einzeln. So kann man sich auch als User genau das rauspicken, was man wirklich benötigt. Dann ein Objektorientiertes Grundgerüst aufbauen und darauf die Module/Funktionen aufbauen. Zum Schluss kann man dann immer noch eine einzelne Datei mit allem anbieten.

Schlussendlich wäre dann ein Aufruf wie folgt denkbar:
PHP:
<script type="text/javascript" modules="menu, whatever, [effects], [themes]" src="fancy.js"></script>
Wobei die Sachen in Klammern alle Dateien in dem entsprechenden Ordner sein würde.
Dabei könnte man dann auch mit [all] einfach mal alles laden.


Gruß,
Terra
 
Zuletzt bearbeitet:
J.FANCY?
Jquery dynamisch zu laden ist keine schlechte Idee.
Da muss ich mich mal schlau machen, wie ich das bewerkstellige :)
Bisher sind es alles eigene Dateien. Jedes Modul ist ein eigenes Projekt.
Ich hab mir das Design überlegt, weil Fancy als Funktion und als Objekt agiert. Zudem gibt die Funktion dann alle anwendbaren Plugins mit. Anders als bei jQuery wird bei jedem Aufruf die eigene Instanz des Moduls zurückgegeben.

Hast du Tips, wie ich objektorientiert programmieren soll?
 
So sollte es funktionieren:
PHP:
var script = document.createElement('script');
script.setAttribute('src', 'http://code.jquery.com/jquery-2.1.4.min.js');
script.setAttribute('type','text/javascript');
script.setAttribute('language','javascript');
document.getElementsByTagName('head')[0].appendChild(script);

Vergiss das mit dem Objekt-Orientierter. :) ... Ich hab nur beim überfliegen einiger Funktionen ein kleines Fragezeichen über meinem Kopf gehabt. Jetzt beim genauen hinsehen wurde mir aber klar, wie was bewerkstelligt wurde.
Das kommt davon, weil jeder immer ein bisschen anders programmiert.

Gruß,
Terra
 
Zuletzt bearbeitet:
Danke

Ich persönlich werde require wahrscheinlich nie nutzen :D
Aber solange es den COde nicht zerstört kann man das ja einbauen.
Kann ich auch Module importieren, die nicht existieren?
 
Soll heißen, dass ich in der Haupt-Datei alle Plugins importiere, die ich erstellt habe und dann muss der Benutzer nur meine Datei importieren und alle Dateien die auch wirklich zu finden sind werden importiert

Beispiel:
Benutzer nutzt Fancy.date und Fancy.notify
Fancy importiert aber Fancy.date, Fancy.notify und Fancy.tooltip
Bekommt der Benutzer dann einen Fehler, weil Tooltip nicht gefunden wurde?
 
Achso. Naja, es kommt drauf an, wie du es programmierst. Wenn das Hauptmodul bereits alles importiert, macht es kein Sinn mehr etwas auswählen zu können, da diese bereits im Speicher geladen sind. Der Gedanken, den ich hatte war eher, das die Module als einzelne Dateien vorliegen und ich mittels Befehl auswählen kann, welche der Module geladen werden. Fancy selbst soll nur die Möglichkeit beinhalten, diese auch laden zu können und diese dann global ausstellt.

Um dein Beispiel zu folgen:
Ich habe folgende Dateien in irgendeinem Ordner: Fancy.date.js, Fancy.notify.js und Fancy.tooltip.js
Ich benötige aber nur "notify" und "tooltip".

So wäre dann mein Aufruf in HTML wie folgt:
PHP:
<script type="text/javascript" modules="notify, tooltip" src="fancy.js"></script>

Es ist jetzt nur ein Beispiel. Wäre vielleicht sogar besser es in einer Art Config-Datei zu deklarieren, da bei 100 Modulen es etwas kompliziert werden könnte. :grin:

Terra
 
So wie du das gerade geschrieben hast liegt das doch beim Benutzer, welche Plugins er importiert.
Wenn ich require richtig verstanden habe, muss sowieso bei jedem Plugin die depencies auf die haupt-datei gelegt werden.
Denn Fancy muss geladen sein, damit die anderen geladen werden können... wie bei jQuery versteht sich.

Ich dachte eher daran, dass der Benutzer es daran festmacht, ob das einzelne Plugin geladen wird oder nicht, indem er das Plugin in den dafür vorgesehenen Ordner legt.

Außer die Seite ist so aufgebaut, dass die einzelnen Seiten unterschiedliche Plugins verlangen.
Obwohl ich die Dateien als min version ausliefer...

Code:
(function( global, factory ) {

    if( typeof module === "object" && typeof module.exports === "object" ) {
        module.exports = global.document ? factory( global, true ) : function( w ) {
            if( !w.document ) {
                throw new Error( "Fancy requires a window with a document" );
            }
            return factory( w );
        };
    } else {
        factory( global );
    }

}( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {


    function Fancy( element ) {
        if( this == window )
            return new Fancy( element );
        this.element = jQuery( element );
        this.name    = "Fancy";
    }



    if( typeof noGlobal === typeof undefined ) {
        window.Fancy = Fancy;
    }
    return Fancy;

} ));

Wäre dieser Block dann richtig für require?
 
Zurück
Oben