En primer lugar, lo más básico del proyecto que deseo crear es un motor wiki implementado como una aplicación web de una sola página. Planeo tener un conjunto de funciones disponibles desde el principio con muchas adiciones de funciones en el futuro.
Caracteristicas basicas
- creación de página (crea un artículo wiki y un foro de discusión para ese artículo)
- marcado y WYSIWYG ala markitup
- conversión sobre la marcha entre marcado / html / WYSIWYG
- una barra lateral para navegar rápidamente
- una barra de herramientas superior para elegir editar / ver
Características avanzadas
- barra lateral configurable para navegar a través de diferentes métodos
- barra de herramientas configurable (posiblemente agregue el lenguaje de marcado de su elección)
- etiquetas
- tareas editables
- arrastrar y soltar archivos subidos y adjuntos de imágenes
El motor originalmente consistiría en la creación de páginas, el marcado y la edición WYSIWYG y el guardado más básicos. Eventualmente me gustaría extender este motor básico con soporte de imágenes de arrastrar y soltar, carga de archivos, gráficos de datos en vivo y una barra lateral para personalizar las vistas.
He hecho una búsqueda bastante extensa de un proyecto decente en el que basar mi proyecto, pero aparte de TiddlyWiki, no parece haber ningún buen motor wiki basado en javascript. También consideré aplicar Jquery en la parte superior de los motores wiki existentes, pero creo que eventualmente terminaría reescribiéndolo de todos modos (además, es más emocionante agregar las funciones que quiero a medida que avanzo). De cualquier manera, he llegado a implementar esta bestia con una biblioteca + marco de javascript.
Sé que realmente no se pueden comparar algunos de estos marcos entre sí, ya que no son manzanas con manzanas. He intentado enmarcar cualquier comentario / pregunta de comparación con piezas comparables de los respectivos marcos, pero estoy abierto a ser corregido.
Así que, aquí vamos:
Basado en mi propia investigación y opiniones, he reducido la lista a los elementos siguientes. Dejé de lado intencionalmente cosas como SproutCore, corMVC, YUI y otras, ya que yo, en mi capacidad limitada, pensé que los elementos a continuación encajarían mejor.
Mis opciones
jquery / UI + backbonejs
En general
Por lo que he leído, esta combinación es utilizada y amada por muchos y es muy flexible y extensible. Mi mayor preocupación es que esta combinación simplemente no es el mejor punto de partida para desarrollar una interfaz de usuario más orientada al escritorio.
UI
Si bien jQueryUI o jqueryTools pueden ser competitivos, ciertamente no parecen estar a la par con las capacidades de interfaz de usuario de otros marcos. Específicamente, parecen tener muchos efectos, pero carecen de un soporte decente de corte de diseño.
javascriptMVC
En general
Para mí, JavascriptMVC parece que es esencialmente extensiones jquery + MVC (jqueryMX), junto con algunas otras aplicaciones para documentar (documentJS), pruebas funcionales (funcUnit) y gestión de código y dependencia (stealJS). Más allá de los beneficios del módulo adicional, creo que el debate funcional realmente se reduce a backbonejs frente a jqueryMX. ¿Estoy en lo cierto en esto y alguien ha trabajado o comparado con ambos?
- Características: descripción general de jupiter (fabricante de jMVC) de sus características
- Enlace a jqueryMX
UI
JavascriptMVC agrega los elementos MXUI encima de lo que esté disponible para Jquery, así que creo que al menos es una pequeña victoria en esa categoría.
knockoutjs
En general
Mis pensamientos y preocupaciones sobre esto son muy similares a los comentarios de jquery + backbone. Ambos parecen ofrecer características similares pero solo desde una perspectiva diferente. Un inconveniente que se cita a menudo es que knockoutjs combina la lógica empresarial y la presentación con demasiada fuerza con el enlace de datos y que este método de enlace puede romperse para una interacción compleja de la interfaz de usuario, pero me encantaría saber por qué eso no es un problema.
- Discusión de los conceptos de backbone vs knockoutJS
- Características de knockoutjs
UI
En blanco por el momento
Dojo y ExtJS
En general
Voy a combinar la discusión Dojo y ExtJS porque sé lo que menos sobre ellos y parecen jugar casi en el mismo espacio. La mayor parte de la información sobre stackoverflow sobre estos dos parece estar desactualizada. Por lo que he visto, ambos son marcos grandes que son buenos para la implementación de aplicaciones de escritorio de calibre. Dojo había sido reprendido por una documentación deficiente, pero parece que ya no es así. ExtJS, por supuesto, tiene la licencia comercial, pero es realmente razonable para lo que obtienes y no lo reprocharía demasiado. Los widgets en ExtJS parecen estar hechos de manera algo más profesional que Dojo, pero ciertamente podría ser corregido allí. Me interesaría saber de alguien que tenga experiencia en ambos.
UI
Dojo tiene la biblioteca de IU de dijit ExtJS tiene características de IU pero no están en Ext core. Aquí está la documentación y aquí están sus demostraciones.
Capuchino
En general
Y luego está Cappuccino. Sin CSS, sin html, pero también podría ser difícil utilizar las bibliotecas de JavaScript existentes. Objective-J no parece dar miedo, especialmente si se tiene en cuenta que también pregonan poder escribir JavaScript sin formato. Las demostraciones son impresionantes y parecen acercarse de cerca a las necesidades de la interfaz de usuario del motor wiki. La API basada en cacao es mucho para alguien que no esté familiarizado con ella, pero tal vez valga la pena. He escuchado que no siempre es fácil trabajar con el motor de diseño, pero una tecnología joven y posiblemente disruptiva como esta ciertamente tendrá algunas deficiencias.
UI
En blanco por el momento
Me disculpo por escribir tanto, pero bueno, al menos no es una pregunta ax vs y vs z esperando toneladas de respuestas baratas. ¿Entonces, qué piensas? ¿Cuál debería ser la base de mi motor de escritorio como wiki, que con suerte se volverá más rico en funciones (lectura compleja) con el tiempo?