¿Alguien ha usado Sproutcore?

19

¿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.

Comunidad
fuente
2
No puedo responder la pregunta, pero puedo decirte que la propia Apple usa SproutCore para sus propios servicios .Mac. Así que al menos es lo suficientemente maduro para eso.
Chuck
Sí, eso es lo que me llamó la atención. Pero con lo poco que he probado, la documentación es lo suficientemente mala (especialmente, por ejemplo, para SC.DataSource y SC.Store) que no estoy seguro de si vale la pena.

Respuestas:

20

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)

nexneo
fuente
17

Trabajé con una empresa que usaba SC para el rediseño de su aplicación insignia. Aquí están mis pensamientos:

  1. 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.

  2. La mejor documentación estaba en el código mismo.

  3. 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.

  4. 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.

  5. Me gusta el hecho de que hacen pruebas de estrés.

  6. 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.

  7. 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.

  8. 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.

  9. El apoyo de IRC fue fenomenal. Los chicos de ese canal son realmente útiles.

hvgotcodes
fuente
1
La capa de acceso a datos es demasiado complicada. Es un gran misterio. - en efecto. Además, la depuración es una gran tarea.
c69
@ c69 - Cuando escribí esto, creí eso. Pero desde entonces he investigado y he llegado a la conclusión de que el almacén de datos es bastante poderoso y no es demasiado difícil de entender. Solo necesita comenzar a hacer cosas con él
hvgotcodes
tal vez en las versiones actuales, es cierto, pero trabajo con SC heredado, y es simplemente una locura ... (y no es actualizable, como parece)
c69
@ c69, si tiene problemas específicos, haga una pregunta y tal vez pueda ayudarlo
hvgotcodes
15

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
55
Afirmé que Apple lo usa, y es de Apple. MobileMe está escrito con SproutCore. appleinsider.com/articles/08/06/16/…
Chuck
Apple tiene su propia base de código, pero regularmente se fusionan con el repositorio público.
Además, en respuesta al problema del hipervínculo, SC está hecho para crear aplicaciones web ricas. Esto significa que normalmente no estás tocando el DOM tú mismo. Como resultado, no tiene la intención de crear sus propios hipervínculos.
7

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:

  1. Prototipo , que se sentía bien, pero jQuery tiene más soporte y libros, etc.
  2. jQuery , que se sentía genial pero no tenía ningún soporte para una arquitectura agradable de alto nivel y comenzamos a construir una, pero tomó demasiado tiempo.
  3. Cappuccino , que tiene una bonita arquitectura de alto nivel pero carece de hoja de ruta y documentación
  4. SproutCore LA SOLUCIÓN, ya que ofrece una buena arquitectura de alto nivel y tiene un buen sistema de construcción incorporado

Nuestra lista superior:

  1. SproutCore es el GANADOR
  2. jQuery es un buen juego de herramientas
  3. Cappuccino parece prometedor pero aún no está allí
  4. El prototipo está bien, pero en mi opinión no es tan bueno como jQuery

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
4

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/

  • También tenga en cuenta que ejecutar la muestra en Safari con el inspector web proporciona un conjunto más útil de mensajes de error.
  • El servidor sc contiene un proxy que puede usarse para acceder a su propia fuente de datos REST que se ejecuta en un servidor web local. Consulte el archivo de compilación en la aplicación de ejemplo sprouttweets anterior para ver cómo funciona.
  • El proxy incluido en el sc-serve es bastante limitado. Si tiene problemas con sus solicitudes de capa de datos, pruebe sc-build y luego despliegue en su servidor web local en lugar del proxy. Encontramos problemas con nuestros bucles de autenticación 401 y la transmisión de grandes respuestas del conjunto de datos (codificación fragmentada).

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
2

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

DetriusXii
fuente