Pregunta

Recientemente han aparecido varios marcos para escribir aplicaciones de escritorio basadas en web. P.ej. SproutCore y Cappuccino . ¿Tienes alguna experiencia usándolos? Cual es tu impresion ¿Me perdí algún otro marco?

He visto relacionados preguntas en StackOverflow, pero generan respuestas en su mayoría estándar como "usar jQuery o MochiKit o MooTools o Dojo o YUI". Mientras que algunas personas dan no estándar respuestas , parecen tener poca experiencia usando estos marcos.

¿Puede alguien compartir una experiencia real desarrollando aplicaciones similares a Destop para el navegador?

¿Fue útil?

Solución

Debido a los problemas de velocidad que estos frameworks de alto nivel causan para muchas aplicaciones más grandes (como en: no trivial), solo usamos jQuery simple. En nuestras pruebas, todos los marcos de alto nivel se dividieron en situaciones en las que hay muchos objetos que se pueden arrastrar o muchos objetos para soltar, y en situaciones en las que se mostraban listas largas (con > 1000 entradas) en la pantalla.

Parte de esto se debe a problemas con IE6 e IE7 (donde el rendimiento repentinamente comienza a deteriorarse dramáticamente después de que los árboles DOM alcanzan cierta complejidad), pero parte se debe a la sobrecarga que generan estos marcos.

Por lo tanto, no recomendaría ninguno de los marcos de alto nivel. Mi recomendación sería usar jQuery y trabajar directamente con el DOM.

Algunos consejos para mejorar el rendimiento:

  • Donde sea posible, renderizar HTML en el servidor.
  • Mantenga el HTML tan simple como posible.
  • Evita tener muchos elementos en el árbol DOM.
  • Evita recursivo estructura de la tabla (IE se detiene repentinamente mostrándolos después de relativamente pocos niveles de anidamiento).
  • Eliminar invisible elementos del árbol DOM.
  • Eliminar cosas del árbol DOM antes cambiándolos y luego reinsertarlos ellos, en lugar de cambiarlos mientras están en el árbol.

Otros consejos

Desde mi punto de vista, Cappuccino es un ejemplo de lo que NO se debe hacer. Implementaron otro lenguaje en la parte superior de JavaScript, que ya trae lentitud mientras que los desarrolladores de navegadores ya están luchando duro y, lo que es peor, no se basan en absoluto en el widget del navegador, rompiendo toda la experiencia de navegación del usuario. Por ejemplo, implementaron su propia barra de desplazamiento, con el principal inconveniente de que usar la rueda del ratón ya no funcionará.

Realmente prefiero el enfoque de ExtJS que le brinda widgets enriquecidos mientras mantiene la interfaz de usuario lo más cerca posible del navegador.

También, como gizmo, recomiendo EXT JS. Su licencia ha cambiado y puede que no funcione para todos, pero sigue siendo una buena opción si desea hacer cosas como una computadora de escritorio.

Aquí está su página de ejemplo para un entorno de escritorio: http: // extjs. com / deploy / dev / examples / desktop / desktop.html

Apple está demostrando que el sproutcore funciona, aunque es difícil estimar qué tan bien funciona. Actualmente construyo aplicaciones web con un conjunto propio de bibliotecas, duplicando un conjunto de funcionalidades de nuestro paquete de software de Windows (pero adaptado a una interfaz web). Hasta ahora he evitado los frameworks particularmente por la razón de que no quería la hinchazón. El problema con este enfoque es que pierdo una cantidad excesiva de tiempo en la funcionalidad de duplicación que ya se encuentra en los marcos, y creo que con el tiempo me voy a aproximar a algo que se asemeja a estos marcos.

Debido a esto, he estado experimentando con la implementación de una aplicación web en extjs, y fue una experiencia sorprendentemente agradable. El rendimiento es excelente y la facilidad de desarrollo es bastante alta porque su conjunto de componentes es bueno para la creación de aplicaciones, no solo para demostraciones sofisticadas (un problema común en los kits de herramientas web). Definitivamente lo recomendaría si está interesado en crear aplicaciones web de escritorio.

El problema de escalarlo obviamente todavía se aplica, pero honestamente, creo que es mejor usar un kit de herramientas en situaciones donde la escala no es tan importante, y recurrir a JavaScript básico solo donde lo necesite (la optimización prematura es raíz de todo mal). Los Extjs pueden colocarse encima del prototipo o jQuery, por lo que este enfoque es definitivamente viable. Evitar demasiado contenido en el DOM suele ser un método de carga y descarga a pedido. Por ejemplo, hay una extensión de terceros para la clase de cuadrícula extjs que permite desplazarse por un conjunto de datos de un millón de filas al ser inteligente en cuanto a la carga y descarga de datos.

Puede considerar usar GWT-Ext (usa Ext debajo) podría ser Una solución muy limpia si va a utilizar Java.

Me gusta qooxdoo , aunque toma el enfoque OOP de JS en lugar del prototípico, es un marco sólido y tiene muchas características.

No tengo ninguna experiencia con SproutCore o Capuccino. Pero he intentado usar Dojo sobre Django para este tipo de trabajo. Solo puedo decirte que es lento y con errores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top