Quelqu'un a-t-il utilisé Sproutcore?


19

Quelqu'un a-t-il utilisé Sproutcore pour une application Web? Si oui, pouvez-vous me donner une description de votre expérience? J'y réfléchis actuellement, mais j'ai quelques inquiétudes. Tout d'abord, la documentation est mauvaise / incomplète, et j'ai peur de passer beaucoup de temps à comprendre ou à fouiller dans le code source. De plus, j'hésite un peu à utiliser un projet relativement nouveau et qui pourrait subir des changements importants.

Toutes les pensées des gens qui ont développé dans Sproutcore sont appréciées!

EDIT / PS: Oui, j'ai vu ce post: /programming/370598/sproutcore-and-cappuccino . Cependant, je suis intéressé par une description un peu plus longue de Sproutcore lui-même de quelqu'un qui l'a utilisé pour un projet important.


2
Je ne peux pas répondre à la question, mais je peux vous dire qu'Apple utilise elle-même SproutCore pour ses propres services .Mac. Il est donc au moins suffisamment mature pour cela.
Chuck

Oui - c'est ce qui a suscité mon intérêt. Mais avec le peu que j'en ai essayé, la documentation est suffisamment mauvaise (en particulier, par exemple, pour SC.DataSource et SC.Store) que je ne sais pas si cela en vaut la peine.

Réponses:


20

Nous utilisons le sproutcore plus que l'année.

J'ai d'abord développé en utilisant la version 0.9 qui était excellente mais qui avait des problèmes de performances, liés à KVO, aux grands ensembles de données, etc. Mais comme SproutCore est Javascript (proche de javascript), nous avons pu les résoudre pour notre application. Pour moi en fait, SproutCore m'a appris la bonne façon de coder javascript. J'apprenais Javascript et SproutCore en même temps.

Quelque part en juillet, ils ont sorti SproutCore 1.0 pré-alpha. L'API a été considérablement modifiée, donc la conversion de notre application vers une version plus récente était un projet en soi. Et la documentation était nulle à l'époque.

Maintenant les choses ont changé, il y a de la documentation et un wiki très sympa. De nouveaux tutoriels et de la documentation sont ajoutés chaque jour.

Si vous pensez utiliser / évaluer SproutCore, c'est le bon moment. Et chaque jour, SproutCore m'émerveille par ses capacités et sa puissance. Il y a toujours beaucoup de bords rugueux, ce qui réduit tous les jours.

Quelques ressources:

Wiki SproutCore

Documents API

Ajout récent pour l'API de magasin de données (qui est une partie très importante)


17

J'ai travaillé avec une entreprise utilisant SC pour la refonte de leur application phare. Voici mes pensées:

  1. J'aime vraiment la disposition MVC d'une application SC. Je pense que c'est quelque chose qui manque aux autres frameworks JS. Leur cadre de liaison facilite la mise à jour des vues.

  2. La meilleure documentation se trouvait dans le code lui-même.

  3. Le besoin d'une meilleure documentation / plus d'exemples. Leurs exemples sont suffisants pour vous aider à démarrer, mais des choses avancées épateront la plupart des utilisateurs.

  4. La couche d'accès aux données est trop compliquée. C'est un énorme mystère. Ils doivent vraiment consolider la documentation ou fournir plus d'exemples pour ouvrir la voie afin que les gens puissent l'utiliser correctement. D'un autre côté, il semble être un framework presque ORM vraiment puissant.

  5. J'aime le fait qu'ils stressent les tests.

  6. L'absence de grille est un véritable frein. Beaucoup sinon la plupart des applications ont besoin de grilles. Cela dit, SC est un framework MVC complet, pas un framework de widgets (composants) list EXTJS.

  7. Une grande partie du code semblait trop complexe. Chaque fois qu'une méthode dépasse 10 à 30 lignes, elle doit vraiment être décomposée pour augmenter la lisibilité.

  8. Peut-être que la plus grande considération est la suivante: si vous travaillez sur un projet et que vous envisagez d'utiliser SC, vous aurez vraiment du mal à trouver des développeurs compétents pour y travailler. Cela peut donc être bon pour un petit projet personnel, mais vous prenez un risque avec un grand projet qui aura besoin de maintenance.

  9. Le soutien de l'IRC a été phénoménal. Les gars de cette chaîne sont vraiment utiles.


1
La couche d'accès aux données est trop compliquée. C'est un énorme mystère. - En effet. En outre, le débogage est une sacrée tâche.
c69

@ c69 - Quand j'ai écrit cela, je le croyais. Mais depuis lors, j'ai creusé et suis arrivé à la conclusion que le magasin de données est assez puissant et pas trop difficile à comprendre. Vous avez juste besoin de commencer à faire des trucs avec ça
hvgotcodes

peut-être dans les versions actuelles, c'est vrai - mais je travaille avec l'héritage SC, et c'est juste de la folie .. (et ce n'est pas modifiable, comme il semble)
c69

@ c69, si vous rencontrez des problèmes spécifiques, posez une question et je peux peut-être vous aider
hvgotcodes

15

Parcourez simplement les publications du groupe sproutcore dans les groupes Google pour avoir une idée de ce qui se passe.

Il y a quelques semaines, quelqu'un s'est plaint des documents, étant un débutant, et essentiellement ce qu'il a obtenu était: "si vous ne l'aimez pas, pourquoi ne pas aider à créer les documents" ... eh bien!

Vous verrez des problèmes comme celui-ci depuis sa création. Il y a quelques semaines également, quelqu'un a demandé au groupe comment créer un lien hypertexte à l'aide de Sproutcore. Je veux dire, LOL, il faut des heures pour créer un simple lien hypertexte apparemment.

Sproutcore n'annonce pas qui utilise son framework dans la nature: ce n'est généralement pas bon signe.

Il est affirmé (pas par sproutcore lui-même afaik) qu'Apple l'utilise, mais si vous regardez attentivement, vous verrez qu'Apple a sa propre base de code.

Personnellement, j'ai trouvé que le sproutcore était criblé de bogues, le manque d'une simple vue de table, des exemples ennuyeux, incomplets ou non fonctionnels, et l'absence de documentation et même l'absence de TESTS complets n'est tout simplement pas une bonne base sur laquelle s'appuyer.


5
J'ai affirmé qu'Apple l'utilisait, et c'est d'Apple lui-même. MobileMe est écrit avec SproutCore. appleinsider.com/articles/08/06/16/…
Chuck

Apple a sa propre base de code, mais ils fusionnent régulièrement avec le repo public.

En outre, en réponse au problème de lien hypertexte, SC est conçu pour créer des applications Web riches. Cela signifie que vous ne touchez pas normalement le DOM vous-même. Par conséquent, vous n'êtes pas censé créer vos propres hyperliens.

7

J'utilise SproutCore et c'est tout simplement génial. Nous sommes passés de jQuery à SproutCore , car jQuery propose un petit ensemble d'utilitaires et SproutCore offre une belle architecture de haut niveau.

Nous avons évalué ces bibliothèques Javascript dans l'ordre suivant:

  1. Prototype , qui se sentait bien mais jQuery a plus de support et de livres, etc.
  2. jQuery , qui se sentait bien mais qui ne supportait pas une belle architecture de haut niveau et nous avons commencé à en construire une, mais cela a pris trop de temps.
  3. Cappuccino , qui a une belle architecture de haut niveau mais manque de feuille de route et de documentation
  4. SproutCore LA SOLUTION, car elle offre une belle architecture de haut niveau et un bon système de construction intégré

Notre top liste:

  1. SproutCore est le GAGNANT
  2. jQuery est une bonne boîte à outils
  3. Le cappuccino semble prometteur mais n'est pas encore tout à fait là
  4. Le prototype est ok, mais à mon avis pas aussi bon que jQuery

Bien sûr, il y a plus de boîtes à outils, mais ce sont celles que nous avons évaluées. En conclusion, je peux fortement recommander SproutCore à toute personne qui construit des applications de classe de bureau en utilisant Javascript. Si vous avez juste besoin d'un simple Javascript, comme des sélecteurs de dates, etc., je recommande jQuery.

Encore une astuce. Au moment de la rédaction de cette réponse, SproutCore 1.0 est la dernière version stable. Malheureusement, il est assez ancien et nous utilisons la dernière version disponible sur la page Github de SproutCore . Je peux fortement le recommander.


4

Si vous essayez d'entrer dans SproutCore, je vous recommande de creuser dans l'exemple d'application SproutTweets. Beaucoup des constructions les plus puissantes (états, frameworks chargés dynamiquement, un exemple utile de source de données) sont là.

Vous pouvez trouver l'application SproutTweets sur github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Sachez également que l'exécution de l'exemple dans Safari avec l'inspecteur Web donne un ensemble plus utile de messages d'erreur.
  • Le serveur sc contient un proxy qui peut être utilisé pour accéder à votre propre source de données REST exécutée sur un serveur Web local. Reportez-vous au buildfile dans l'exemple d'application sprouttweets ci-dessus pour voir comment cela fonctionne.
  • Le proxy inclus dans le sc-serve est assez limité. Si vous rencontrez des problèmes avec vos demandes de couche de données, essayez sc-build, puis déployez-le sur votre serveur Web local au lieu du proxy. Nous avons constaté des problèmes avec nos boucles d'authentification 401 et la diffusion en continu de réponses de grands ensembles de données (codage tronqué).

Même si vous n'avez pas l'intention d'utiliser SproutCore dans une application de production, vous vous devez de l'explorer davantage pour voir une approche puissante de la programmation d'applications javascript - en particulier le KVO et les mixins (aspects). Beaucoup de grande architecture à méditer et à apprendre.

Dernier point - le canal IRC peut être beaucoup plus utile que d'autres sources d'information, juste après quelques plongées profondes dans les discussions de groupe Google.


2

J'ai utilisé SproutCore dans le passé. On m'a confié un projet de développement de scripts de tests Web automatisés à l'aide de l'outil appelé Selenium RC. Selenium RC a été conçu pour cibler les identifiants et classes HTML normaux, mais SproutCore compile les identifiants des éléments afin que les identifiants des éléments soient pseudo aléatoires, j'ai donc dû trouver l'API pour SproutCore afin de pouvoir repérer les identifiants des éléments à partir de l'arborescence.

SproutCore a une analogie étroite avec les compilateurs. Si vous avez trop d'éléments que vous importez en train de créer pour votre page Web, il y a une chance que vous ayez une collision d'espace de noms sur les ID si vous deviez créer votre application avec jQuery. Lorsque vous créez votre page Web avec jQuery, tous les ID des éléments HTML sont globaux. La portée locale n'existe pas comme dans un langage compilé ou interprété.

SproutCore finit par gérer le contenu HTML pour vous. Les vues sont construites à l'aide de javascript puis compilées. Si vous passez par le didacticiel SproutCore (et je conviens que SproutCore manque de documentation, vous devriez donc essayer de l'éviter pour une application métier), vous verrez que votre projet fini contient des éléments ID "sc - ###". Les collisions d'espace de noms sont résolues sur le site Web, ce qui vous permet de travailler plus rapidement.

Cependant, il y a des préoccupations majeures. Leur documentation ne suffit pas à expliquer pourquoi les gens devraient l'utiliser. Le projet est open source, mais creuser votre chemin pour comprendre le javascript de niveau inférieur pour la façon dont les vues sont construites devient pénible. Javascript est un langage fonctionnel, mais je trouve juste quelque chose de mal avec les langages fonctionnels dynamiques. Il y a juste trop de flexibilité. Je branche Scala.

Le dernier numéro. SproutCore peut être lent. Mais c'est un prix à payer

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.