Zunächst einmal ist das wichtigste Element des Projekts, das ich erstellen möchte, eine Wiki-Engine, die als Web-App für eine einzelne Seite implementiert ist. Ich habe vor, von Anfang an eine Reihe von Funktionen mit zahlreichen zusätzlichen Funktionen zur Verfügung zu haben.
Grundfunktionen
- Seitenerstellung (erstellt sowohl einen Wiki-Artikel als auch ein Diskussionsforum für diesen Artikel)
- Markup und WYSIWYG ala Markitup
- On-the-Fly-Konvertierung zwischen Markup / HTML / WYSIWYG
- eine Seitenleiste zur schnellen Navigation
- Eine obere Symbolleiste zur Auswahl von Bearbeiten / Anzeigen
Erweiterte Funktionen
- konfigurierbare Seitenleiste zum Navigieren über verschiedene Methoden
- konfigurierbare Symbolleiste (möglicherweise Markup-Sprache Ihrer Wahl hinzufügen)
- Stichworte
- bearbeitbare Aufgaben
- Datei-Uploads und Bildanhänge per Drag & Drop
Die Engine bestand ursprünglich aus der grundlegendsten Seitenerstellung, Markup- und WYSIWYG-Bearbeitung sowie dem Speichern. Ich möchte diese grundlegende Engine eventuell mit Drag & Drop-Bildunterstützung, Datei-Uploads, Live-Datendiagrammen und einer Seitenleiste zum Anpassen von Ansichten erweitern.
Ich habe eine ziemlich umfangreiche Suche nach einem anständigen Projekt durchgeführt, auf dem mein Projekt basieren kann, aber außer TiddlyWiki scheint es keine guten Javascript-basierten Wiki-Engines zu geben. Ich habe auch darüber nachgedacht, Jquery auf vorhandene Wiki-Engines anzuwenden, aber ich glaube, ich würde es letztendlich sowieso umschreiben (außerdem ist es nur aufregender, die gewünschten Funktionen hinzuzufügen, wenn ich gehe). So oder so bin ich dazu gekommen, dieses Biest mit einer Javascript-Bibliothek + Framework zu implementieren.
Ich weiß, dass man einige dieser Frameworks nicht wirklich miteinander vergleichen kann, da es sich nicht um Äpfel mit Äpfeln handelt. Ich habe versucht, Vergleichskommentare / -fragen mit vergleichbaren Teilen der jeweiligen Frameworks zu verknüpfen, bin jedoch offen für Korrekturen.
Auf geht's:
Aufgrund meiner eigenen Recherchen und Meinungen habe ich die Liste auf die folgenden Punkte eingegrenzt. Ich habe absichtlich Dinge wie SproutCore, corMVC, YUI und andere weggelassen, da ich in meiner begrenzten Kapazität dachte, dass die folgenden Elemente besser passen würden.
Meine Optionen
jquery / UI + backbonejs
Insgesamt
Nach dem, was ich gelesen habe, wird diese Kombination von vielen benutzt und geliebt und ist sehr flexibel und erweiterbar. Mein Hauptanliegen ist, dass diese Kombination einfach nicht der beste Ausgangspunkt für die Entwicklung einer eher desktoporientierten Benutzeroberfläche ist.
Benutzeroberfläche
Obwohl jQueryUI oder jqueryTools möglicherweise wettbewerbsfähig sind, scheinen sie sicherlich nicht mit den UI-Funktionen anderer Frameworks mithalten zu können. Insbesondere scheinen sie die Effekte stark zu beeinträchtigen, es fehlt ihnen jedoch an einer angemessenen Unterstützung für das Schneiden von Layouts.
javascriptMVC
Insgesamt
JavascriptMVC scheint mir im Wesentlichen eine Erweiterung von jquery + MVC (jqueryMX) zu sein, zusammen mit einigen anderen Apps für die Dokumentation (documentJS), Funktionstests (funcUnit) und das Code- und Abhängigkeitsmanagement (stehlenJS). Abgesehen von den Vorteilen des zusätzlichen Moduls denke ich, dass die funktionale Debatte wirklich auf backbonejs vs. jqueryMX hinausläuft. Bin ich damit richtig und hat jemand mit beiden gearbeitet oder sie verglichen?
Benutzeroberfläche
JavascriptMVC fügt die MXUI- Elemente zusätzlich zu den für Jquery verfügbaren Elementen hinzu, sodass ich zumindest denke, dass dies ein leichter Gewinn in dieser Kategorie ist.
Knockoutjs
Insgesamt
Meine Gedanken und Bedenken dazu sind den Kommentaren zu jquery + backbone sehr ähnlich. Beide scheinen ähnliche Funktionen zu bieten, jedoch nur aus einer anderen Perspektive. Ein oft genannter Nachteil ist, dass Knockoutjs Geschäftslogik und Präsentation zu eng mit den Datenbindungen verbindet und dass diese Bindungsmethode für komplexe UI-Interaktionen zusammenbrechen kann, aber ich würde gerne hören, warum dies kein Problem ist.
- Diskussion von Backbone vs KnockoutJS-Konzepten
- Merkmale von Knockoutjs
Benutzeroberfläche
Im Moment leer
Dojo & ExtJS
Insgesamt
Ich werde die Diskussion Dojo und ExtJS kombinieren, weil ich am wenigsten über sie weiß und sie auf fast demselben Raum zu spielen scheinen. Die meisten Informationen zum Stapelüberlauf über diese beiden scheinen veraltet zu sein. Ich habe gesehen, dass es sich bei beiden um große Frameworks handelt, die sich gut für die Implementierung von Desktop-Apps eignen. Dojo war wegen schlechter Dokumentation getadelt worden, aber das scheint nicht mehr der Fall zu sein. ExtJS hat natürlich die kommerzielle Lizenz, aber es ist wirklich vernünftig für das, was Sie bekommen, und ich würde das nicht zu sehr dagegen halten. Die Widgets in ExtJS scheinen etwas professioneller zu sein als Dojo, aber ich könnte dort sicherlich korrigiert werden. Es würde mich interessieren, von jemandem zu hören, der Erfahrung in beiden Bereichen hat.
Benutzeroberfläche
Dojo verfügt über die Dijit- UI-Bibliothek ExtJS verfügt über UI-Funktionen, die sich jedoch nicht im Ext-Kern befinden. Hier ist die Dokumentation und hier sind ihre Demos
Cappuccino
Insgesamt
Und dann ist da noch Cappuccino. Kein CSS, kein HTML, aber es könnte auch schwierig sein, vorhandene Javascript-Bibliotheken zu verwenden. Objective-J scheint nicht beängstigend zu sein, besonders wenn man bedenkt, dass sie auch einfaches Javascript schreiben können. Die Demos sind beeindruckend und scheinen den Anforderungen der Benutzeroberfläche für die Wiki-Engine sehr nahe zu kommen. Die kakaobasierte API ist eine Menge für jemanden, der nicht damit vertraut ist, aber vielleicht lohnt es sich. Ich habe gehört, dass die Layout-Engine nicht immer einfach zu bedienen ist, aber eine junge und möglicherweise störende Technologie wie diese wird sicherlich einige Mängel aufweisen.
Benutzeroberfläche
Im Moment leer
Ich entschuldige mich dafür, dass ich so viel geschrieben habe, aber hey, zumindest ist es keine Frage zwischen Axt und Y und Z, in der Hoffnung auf jede Menge billiger Antworten. Also was denkst du? Was sollte die Basis für meine Desktop-ähnliche Wiki-Engine sein, die mit der Zeit hoffentlich funktionsreicher (komplexer lesen) wird?