Alguém já usou o Sproutcore?


19

Alguém já usou o Sproutcore para um aplicativo da web? Se sim, você pode me dar uma descrição da sua experiência? Atualmente, estou considerando isso, mas tenho algumas preocupações. Primeiro, a documentação está ruim / incompleta e tenho medo de gastar muito tempo tentando descobrir as coisas ou vasculhando o código-fonte. Além disso, estou um pouco hesitante em usar um projeto que seja relativamente novo e possa sofrer mudanças significativas.

Quaisquer pensamentos de pessoas que se desenvolveram no Sproutcore são bem-vindos!

EDIT / PS: Sim, eu já vi este post: /programming/370598/sproutcore-and-cappuccino . No entanto, estou interessado em uma descrição um pouco mais longa do próprio Sproutcore de alguém que o usou em um projeto significativo.


2
Não consigo responder à pergunta, mas posso dizer que a própria Apple usa o SproutCore para seus próprios serviços .Mac. Então é pelo menos maduro o suficiente para isso.
Chuck

Sim - é isso que me interessou. Mas com o pouco que tentei, a documentação é ruim o suficiente (especialmente, por exemplo, para SC.DataSource e SC.Store), que não tenho certeza se vale a pena.

Respostas:


20

Estamos usando o sproutcore mais que o ano.

Primeiro, desenvolvi a versão 0.9, que era excelente, mas apresentava problemas de desempenho, relacionados ao KVO, grandes conjuntos de dados, etc. Para mim, o SproutCore me ensinou a maneira correta de codificar javascript. Eu estava aprendendo Javascript e SproutCore ao mesmo tempo.

Em julho, eles lançaram o SproutCore 1.0 pré-alfa. A API foi alterada significativamente, portanto, converter nosso aplicativo para uma versão mais recente já era um projeto. E a documentação era zero naquele momento.

Agora as coisas mudaram. Existe documentação e um wiki muito bom. Novos tutoriais e documentação são adicionados a cada dia.

Se você está pensando em usar / avaliar o SproutCore, está na hora certa. E a cada dia o SproutCore me surpreende com a capacidade e o poder que ele contém. Ainda existem muitas arestas, o que reduz todos os dias.

Alguns recursos:

Wiki SproutCore

Documentos da API

Adição recente à API de armazenamento de dados (que é parte muito importante)


17

Trabalhei com uma empresa que usava o SC para o novo design de aplicativos. Aqui estão os meus pensamentos:

  1. Eu realmente gosto do layout MVC de um aplicativo SC. É algo que acho que outros frameworks JS não possuem. Sua estrutura de ligação facilita a atualização de visualizações.

  2. A melhor documentação estava no próprio código.

  3. A necessidade de melhor documentação / mais exemplos. Seus exemplos são suficientes para você começar, mas coisas avançadas irão surpreender a maioria dos usuários.

  4. A camada de acesso a dados é muito complicada. É um enorme mistério. Eles precisam realmente fornecer documentação ou fornecer mais exemplos para pavimentar o caminho para que as pessoas possam usá-la adequadamente. Por outro lado, parece ser uma estrutura quase ORM realmente poderosa.

  5. Eu gosto do fato de eles estressarem os testes.

  6. A falta de uma grade é uma chatice real. Muitos, se não a maioria dos aplicativos, precisam de grades. Dito isto, o SC é uma estrutura MVC com todos os recursos, não uma estrutura de widgets (componentes) da lista EXTJS.

  7. Muito do código parecia excessivamente complexo. Sempre que um método ultrapassa 10 a 30 linhas, ele deve ser realmente dividido para aumentar a legibilidade.

  8. Talvez a maior consideração seja a seguinte: se você estiver trabalhando em um projeto e considerando o SC, terá problemas reais para encontrar desenvolvedores competentes para trabalhar nele. Portanto, pode ser bom para um projeto pessoal pequeno, mas você está assumindo um risco com um projeto grande que precisará de manutenção.

  9. O suporte do IRC foi fenomenal. Os caras desse canal são realmente úteis.


1
A camada de acesso a dados é muito complicada. É um enorme mistério. - de fato. Além disso, a depuração é uma tarefa e tanto.
C69

@ c69 - Quando escrevi isso, eu acreditava nisso. Mas, desde então, analisei e concluí que o armazenamento de dados é bastante poderoso e não é difícil de entender. Você só precisa começar coisas fazendo com ele
hvgotcodes

talvez em versões atuais, é verdade - mas eu trabalho com o legado SC, e apenas a sua loucura .. (e não é atualizável, como parece)
C69

@ C69, se você está tendo problemas específicos, fazer uma pergunta e talvez eu possa ajudar
hvgotcodes

15

Basta navegar pelas postagens do grupo sproutcore nos grupos do Google para ter uma ideia do que está acontecendo.

Algumas semanas atrás, alguém se queixou dos documentos, sendo um novato, e basicamente o que ele conseguiu foi: "se você não gosta, por que não ajuda a criar os documentos" ... bem, duh !!

Você verá problemas como este desde o início. Algumas semanas atrás, alguém perguntou ao grupo como criar um hiperlink usando o Sproutcore. Quero dizer, LOL, leva horas para criar um hiperlink simples, aparentemente.

O Sproutcore não anuncia quem está usando sua estrutura na natureza: geralmente não é um bom sinal.

Alega-se (não pelo sproutcore em si) que a Apple o usa, mas se você olhar de perto, verá que a Apple possui sua própria base de código.

Pessoalmente, achei que o sproutcore estava cheio de bugs, a falta de uma simples tabela irritante, exemplos incompletos ou não funcionais e a ausência de documentação e até a ausência de TESTES completos não são uma boa base para se basear.


5
Afirmei que a Apple o usa e é da própria Apple. O MobileMe é escrito com SproutCore. appleinsider.com/articles/08/06/16/…
Chuck

A Apple tem sua própria base de código, mas regularmente se fundem com o repositório público.

Além disso, em resposta ao problema do hiperlink, o SC é criado para criar aplicativos da web avançados. Isso significa que você normalmente não está tocando no DOM. Como resultado, você não pretende criar seus próprios hiperlinks.

7

Estou usando o SproutCore e é simplesmente ótimo. Mudamos do jQuery para o SproutCore , uma vez que o jQuery oferece um pequeno conjunto de utilitários e o SproutCore oferece uma bela arquitetura de alto nível.

Avaliamos essas bibliotecas Javascript na seguinte ordem:

  1. Protótipo , que parecia bom, mas o jQuery tem mais suporte e livros, etc.
  2. jQuery , que foi ótimo, mas não tinha suporte para uma arquitetura de alto nível e começamos a criar uma, mas demorou muito tempo.
  3. Cappuccino , que possui uma bela arquitetura de alto nível, mas carece de roteiro e documentação
  4. SproutCore A SOLUÇÃO, uma vez que oferece uma arquitetura de alto nível e um bom sistema de compilação embutido

Nossa lista principal:

  1. SproutCore é o VENCEDOR
  2. jQuery é um bom kit de ferramentas
  3. Cappuccino parece promissor, mas ainda não está lá
  4. Protótipo está ok, mas na minha opinião não é tão bom quanto o jQuery

Claro que existem mais kits de ferramentas, mas esses são os que avaliamos. Como conclusão, recomendo o SproutCore a qualquer pessoa que esteja criando aplicativos de classe para desktop usando Javascript. Se você precisar apenas de Javascript simples, como seletores de datas etc., recomendo o jQuery.

Apenas mais uma dica. No momento em que escrevo esta resposta, o SproutCore 1.0 é a versão estável mais recente. Infelizmente, é bastante antiga e estamos usando a versão mais recente que pode ser encontrada na página Github do SproutCore . Eu recomendo isso.


4

Se você estiver tentando entrar no SproutCore, recomendo que você procure no aplicativo de amostra SproutTweets. Muitas das construções mais poderosas (estados, estruturas carregadas dinamicamente, um exemplo útil de uma fonte de dados) estão lá.

Você pode encontrar o aplicativo SproutTweets no github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Lembre-se também de que a execução da amostra no Safari com o inspetor da web fornece um conjunto mais útil de mensagens de erro.
  • O servidor sc contém um proxy que pode ser usado para acessar sua própria fonte de dados REST em execução em um servidor web local. Consulte o arquivo de compilação no aplicativo de amostra sprouttweets acima para ver como isso funciona.
  • O proxy incluído no sc-serve é bastante limitado. Se você tiver problemas com as solicitações da camada de dados, forneça uma configuração ao sc-build, implante no servidor da web local em vez do proxy. Encontramos problemas nos nossos loops de autenticação 401 e no fluxo de respostas de grandes conjuntos de dados (codificação em pedaços).

Mesmo que você não tenha a intenção de usar o SproutCore em um aplicativo de produção, você deve explorá-lo ainda mais para ver uma abordagem poderosa da programação de aplicativos javascript - especialmente o material KVO e mixins (aspectos). Muita arquitetura excelente para refletir e aprender.

Último ponto - o canal de IRC pode ser muito mais útil do que outras fontes de informação, perdendo apenas para alguns mergulhos profundos nas discussões em grupo do Google.


2

Eu usei o SproutCore no passado. Fui designado a um projeto para desenvolver scripts de teste da Web automatizados usando a ferramenta chamada Selenium RC. O Selenium RC foi criado para direcionar IDs e classes HTML regulares, mas o SproutCore compila os IDs dos elementos para que eles sejam pseudo-aleatórios, então tive que descobrir a API do SproutCore para poder pescar os IDs dos elementos na árvore de visualização.

O SproutCore tem uma analogia próxima aos compiladores. Se você tiver muitos elementos que você está importando criando para sua página da web, é possível que haja uma colisão de namespace nos IDs, se você construir seu aplicativo com o jQuery. Ao criar sua página da web com jQuery, todos os IDs dos elementos HTML são globais. Não existe escopo local como em um idioma compilado ou interpretado.

O SproutCore acaba gerenciando o conteúdo HTML para você. As visualizações são construídas usando javascript e compiladas. Se você seguir o tutorial do SproutCore (e eu concordo que o SproutCore esteja com falta de documentação, tente evitá-lo para um aplicativo de negócios), verá que seu projeto finalizado possui elementos de identificação "sc - ###". As colisões de namespace são resolvidas no site, dando a você o potencial de trabalhar mais rapidamente.

No entanto, existem grandes preocupações. A documentação deles não faz um trabalho bom o suficiente para explicar por que as pessoas devem usá-lo. O projeto é de código-fonte aberto, mas é difícil abrir caminho para entender o javascript de nível inferior de como as visualizações são construídas. Javascript é uma linguagem funcional, mas eu acho algo errado com linguagens funcionais dinâmicas. Há muita flexibilidade. Estou ligando Scala.

A última edição. O SproutCore pode ser lento. Mas é um preço a pagar

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.