¿Alguien ha usado Sproutcore para una aplicación web? Si es así, ¿puede darme una descripción de su experiencia? Actualmente lo estoy considerando, pero tengo algunas preocupaciones. Primero, la documentación es mala / incompleta, y me temo que pasaré mucho tiempo averiguando cosas o buscando en el código fuente. Además, dudo un poco en usar un proyecto que es relativamente nuevo y podría sufrir cambios significativos.
¡Se agradece cualquier pensamiento de personas que se hayan desarrollado en Sproutcore!
EDITAR / PS: Sí, he visto esta publicación: /programming/370598/sproutcore-and-cappuccino . Sin embargo, estoy interesado en una descripción un poco más larga del Sproutcore en sí de alguien que lo haya usado para un proyecto importante.
javascript
Comunidad
fuente
fuente
Respuestas:
Estamos usando sproutcore más que año.
Primero, desarrollé usando la versión 0.9, que era excelente pero tenía problemas de rendimiento, relacionados con KVO, grandes conjuntos de datos, etc. Pero como SproutCore es Javascript (cerca de JavaScript) pudimos resolverlos para nuestra aplicación. En realidad, para mí, SproutCore me enseñó la forma correcta de codificar JavaScript. Estaba aprendiendo Javascript y SproutCore al mismo tiempo.
Alrededor de julio lanzaron SproutCore 1.0 pre-alpha. La API se modificó significativamente, por lo que convertir nuestra aplicación a una versión más nueva fue un proyecto en sí mismo. Y la documentación era cero en ese momento.
Ahora las cosas han cambiado, hay documentación y una wiki muy bonita. Nuevos tutoriales y documentación añadidos cada día.
Si está pensando en usar / evaluar SproutCore, este es el momento adecuado. Y cada día SproutCore me sorprende con la capacidad y el poder que contiene. Todavía hay muchos bordes ásperos, lo que reduce todos los días.
Algunos recursos:
Wiki SproutCore
Documentos de API
Adición reciente para la API del almacén de datos (que es una parte muy importante)
fuente
Trabajé con una empresa que usaba SC para el rediseño de su aplicación insignia. Aquí están mis pensamientos:
Realmente me gusta el diseño MVC de una aplicación SC. Es algo que creo que carece de otros marcos JS. Su marco vinculante facilita la actualización de las vistas.
La mejor documentación estaba en el código mismo.
La necesidad de mejor documentación / más ejemplos. Sus ejemplos son suficientes para ayudarlo a comenzar, pero las cosas avanzadas sorprenderán a la mayoría de los usuarios.
La capa de acceso a datos es demasiado complicada. Es un gran misterio. Necesitan realmente apuntalar la documentación o proporcionar más ejemplos para allanar el camino para que las personas puedan usarlo adecuadamente. Por otro lado, parece ser un marco casi ORM realmente poderoso.
Me gusta el hecho de que hacen pruebas de estrés.
La falta de una cuadrícula es un verdadero lastre. Muchas, si no la mayoría de las aplicaciones necesitan cuadrículas. Dicho esto, SC es un marco MVC con todas las funciones, no un marco de widgets (componentes) de la lista EXTJS.
Gran parte del código parecía demasiado complejo. Cada vez que un método llega a tener más de 10-30 líneas, realmente debe dividirse para aumentar la legibilidad.
Quizás la mayor consideración es esta: si está trabajando en un proyecto y está considerando SC, tendrá verdaderos problemas para encontrar desarrolladores competentes para trabajar en él. Por lo tanto, puede ser bueno para un proyecto personal pequeño, pero está arriesgando con un proyecto grande que necesitará mantenimiento.
El apoyo de IRC fue fenomenal. Los chicos de ese canal son realmente útiles.
fuente
Simplemente navegue por las publicaciones grupales de sproutcore en google groups para tener una idea de lo que está sucediendo.
Hace algunas semanas, alguien se quejó de los documentos, de ser un novato, y básicamente lo que obtuvo fue: "si no te gusta, ¿por qué no ayudas a crear los documentos" ... bueno, duh!
Verá problemas como este desde su inicio. También hace unas semanas, alguien le preguntó al grupo cómo crear un hipervínculo utilizando Sproutcore. Quiero decir, LOL, aparentemente lleva horas crear un hipervínculo simple.
Sproutcore no anuncia quién está usando su marco en la naturaleza: generalmente no es una buena señal.
Se afirma (no por Sproutcore en sí afaik) que Apple lo usa, pero si observa de cerca verá que Apple tiene su propia base de código.
Personalmente, encontré que Sproutcore está plagado de errores, la falta de una simple vista de tabla molesta, ejemplos incompletos o que no funcionan, y la ausencia de documentación e incluso la ausencia de TESTS completos no es una buena base para construir.
fuente
Estoy usando SproutCore y es simplemente genial. Cambiamos de jQuery a SproutCore , ya que jQuery ofrece un pequeño conjunto de utilidades y SproutCore ofrece una bonita arquitectura de alto nivel.
Evaluamos estas bibliotecas Javascript en el siguiente orden:
Nuestra lista superior:
Por supuesto, hay más kits de herramientas, pero estos son los que evaluamos. Como conclusión, puedo recomendar SproutCore a cualquiera que esté creando aplicaciones de clase de escritorio usando Javascript. Si solo necesita un Javascript simple, como selectores de fecha, etc., le recomiendo jQuery.
Solo un consejo más. Al momento de escribir esta respuesta, SproutCore 1.0 es la última versión estable. Desafortunadamente es bastante antiguo y estamos utilizando la última versión que se puede encontrar en la página de Github de SproutCore . Lo recomiendo mucho.
fuente
Si está intentando ingresar a SproutCore, le recomiendo que busque en la aplicación de ejemplo SproutTweets. Muchas de las construcciones más potentes (estados, marcos cargados dinámicamente, un ejemplo útil de una fuente de datos) están ahí.
Puede encontrar la aplicación SproutTweets en github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/
Incluso si no tiene intención de usar SproutCore en una aplicación de producción, se lo debe a sí mismo explorarlo más a fondo para ver un enfoque poderoso para la programación de aplicaciones de JavaScript, especialmente el KVO y las cosas mixins (aspectos). Mucha arquitectura genial para reflexionar y aprender.
Último punto: el canal IRC puede ser mucho más útil que otras fuentes de información, solo superado por algunas inmersiones profundas en las discusiones grupales de Google.
fuente
He usado SproutCore en el pasado. Me asignaron un proyecto para desarrollar scripts de prueba web automatizados utilizando la herramienta llamada Selenium RC. Selenium RC se creó para apuntar a ID y clases HTML normales, pero SproutCore compila las ID de elementos para que las ID de elementos sean pseudoaleatorias, por lo que tuve que averiguar la API para SproutCore para poder pescar las ID de elementos desde el árbol de vista.
SproutCore tiene una analogía cercana a los compiladores. Si tiene demasiados elementos que está importando para su página web, existe la posibilidad de que haya una colisión de espacio de nombres en los ID si construye su aplicación con jQuery. Cuando crea su página web con jQuery, todas las ID de los elementos HTML son globales. No existe el ámbito local como en un lenguaje compilado o interpretado.
SproutCore termina administrando el contenido HTML por usted. Las vistas se crean utilizando JavaScript y luego se compilan. Si sigue el tutorial de SproutCore (y estoy de acuerdo en que SproutCore carece de documentación, por lo que debe intentar evitarlo para una aplicación comercial), verá que su proyecto terminado tiene elementos de ID de "sc - ###". Las colisiones de espacio de nombres se resuelven en el sitio web, lo que le brinda la posibilidad de trabajar más rápido.
Sin embargo, hay grandes preocupaciones. La documentación no hace un trabajo lo suficientemente bueno como para explicar por qué las personas deberían usarla. El proyecto es de código abierto, pero cavar hacia abajo para comprender el javascript de nivel inferior de cómo se construyen las vistas se vuelve doloroso. Javascript es un lenguaje funcional, pero acabo de encontrar algo mal con los lenguajes dinámicos funcionales. Hay demasiada flexibilidad. Estoy conectando a Scala.
El último número. SproutCore puede ser lento. Pero es un precio a pagar
fuente