Usando uma estrutura como o Backbone [fechado]

24

Atualmente, tenho uma página http://proctors.org/tv que é direcionada por várias visualizações e anexos com toneladas de jQuery e espaguete JavaScript cortado juntos, e eu gostaria de limpá-la. Entendo que as estruturas Javascript "MVC" mais recentes usam modelos e não armazenam estritamente todos os dados no DOM, como você faria com o jQuery.

Eu acredito que você usaria algo como Serviços e / ou Visualizações como back-end, com o Backbone na frente.

Existe um projeto Do para o Backbone , e eu lembro que havia um BoF ou uma sessão na DrupalCon Denver sobre isso ...

Espero descobrir se vale a pena tentar reescrever isso em uma nova estrutura ou apenas limpar o que tenho aqui.

Ryan Price
fonte
4
Qual é a pergunta exatamente? Se a pergunta for "Alguém está usando estruturas Javascript como Backbone ou Ember with Drupal?" então é uma enquete e, como tal, não é bem-vinda nos sites do Stack Exchange. Se você tiver uma pergunta específica sobre o uso de uma dessas estruturas JavaScript, faça essa pergunta.
kiamlaluno
2
Eu acho que ele está perguntando se existem estruturas de JavaScript do MVC que podem funcionar suficientemente bem com a própria estrutura de JavaScript do Drupal, que resultariam em menos trabalho do que simplesmente criar o seu próprio. Parece justo para mim - para algumas coisas, a migração para o Drupal é lindamente tranquila, para outras, é preciso tanto hacking que seria melhor reescrevê-lo do zero - e parece justo perguntar às pessoas que já tentaram.
User6reinstatemonica8
Se você quer um rápido tutorial para obter backbone + drupal-se uma execução, você pode conferir meu blog pixelite.co.nz/article/...
masterchief
Esse cara tem um bom ponto para backbone e Drupal começando pixelite.co.nz/article/...
Dan Walmsley
Ha que o cara é @masterchief de uma das respostas acima
Ryan Preço

Respostas:

18

Eu usei o Ember e o Backbone junto com o Drupal - mas não da maneira que você pensaria.

O Ember e o Backbone são excelentes ferramentas para criar um aplicativo da Web - mas o Drupal não é realmente uma boa ferramenta a ser usada junto com eles. O que você deseja ao criar um aplicativo Web é algo leve e rápido. Você quer que seja rápido para dar a seus usuários a sensação de tempo de resposta imediato. Você quer que seja leve para melhorar sua escala. O Drupal não é rápido - a inicialização completa do Drupal leva muito tempo (em comparação com muitas outras opções) se tudo o que você quer fazer é fornecer uma API REST para seu aplicativo da web. Drupal é PHP, o que também deixa bastante memória RAM limitando o número de usuários simultâneos.

Então, se o Drupal é tão ruim para isso, por que usá-lo?

Você realmente deve usar o Drupal para obter o que o Drupal se destaca em - um CMS. O que eu fiz no passado com projetos que precisavam de um aplicativo Web é usar o Drupal para criar o CMS em torno do aplicativo Web. Para criar coisas como blogs, listas de conteúdo e curtidas. Também criei módulos para definir algumas coisas de back-end - como definições de esquema e outras onde fazia sentido usar o Drupal - porque isso tornava meu desenvolvimento muito mais fácil.

Em vez de usar o Drupal para criar a API REST que o aplicativo da web precisava - usei o Node.js para criar a API REST real e outras verificações que o Aapp solicita que o aplicativo da web faça. O Node.js é excelente em fazer exatamente isso. É rápido demais (tempos de resposta tão baixos quanto 30ms para uma lista de objetos). Também é muito leve, já que o JavaScript no servidor usa ações assíncronas, um servidor Node.js. geralmente pode lidar com milhares de usuários simultâneos, onde o PHP pode lidar com talvez 100. Além disso, como o Node.js. é JavaScript, você pode reutilizar muito do servidor de código e do lado do cliente. Você pode literalmente escrever o mesmo código de validação, em vez de precisar implementar o lado do cliente em JavaScript e o lado do servidor em PHP. Se você estiver indo para o Drupal con em Munique em algumas semanas - considere assistir à apresentação do node.js..

Portanto, se você é um desenvolvedor, recomendo fortemente que faça uma configuração semelhante e use apenas o Drupal para o que é realmente bom. Se você deseja criar um aplicativo da web simples e não espera muito usuário, usar o Drupal como back-end pode ser uma opção, se ajudar no seu tempo de desenvolvimento.


Atualizar Drupal 8

Portanto, com o lançamento do Drupal 8, algumas das opções acima ainda são verdadeiras, mas não da mesma forma que antes. O Drupal 8 é como o Drupal 7 não é uma ferramenta leve, como Node.js, Rails, Django etc. Como os aplicativos JavaScript consomem principalmente vários serviços, você ainda deve considerar se o Drupal é a melhor ferramenta para isso.

Com o Drupal 8, muitas coisas foram aprimoradas. Services é muito mais nativo, com o Symphony direcionando a solicitação / resposta. O Drupal 8 tem muitas possibilidades interessantes com o cache avançado e todos os ótimos recursos. Mas mesmo com toda a grandeza do Drupal 8, ele ainda é muito mais pesado que as aplicações leves. É difícil dizer o quão bem-sucedido o Drupal 8 pode ser usado como um provedor rápido de serviços da web.

Ainda assim, com tudo dito e feito, minha recomendação geral permanece a mesma. Sendo um desenvolvedor do Drupal, é fácil usar o Drupal para tudo, pois estamos familiarizados com ele. Parece seguro e o Drupal pode ser usado para praticamente qualquer coisa. Lembre-se, embora seja possível usar o Drupal para qualquer coisa, isso não significa que é a melhor ferramenta para tudo. Fazer uma análise sólida e entender os pontos fortes e fracos das ferramentas que você deseja usar em um projeto de TI sempre será uma grande ajuda e poderá evitar que você termine em uma posição de impasse com um resultado que não atenda às suas expectativas. .

googletorp
fonte
Abordagem interessante. Você está usando o drupal.org/project/nodejs ou está rolando sua própria interface para o Drupal DB?
mpdonadio
@googletorp, trabalhei com phusion passenger e mesmo ela não pode ter um desempenho melhor sem o cache e a otimização do servidor, e todas as linguagens de script do lado do servidor (exceto js) têm uma boa quantidade de problemas de bloqueio. Na verdade, eu mesmo mudei de ruby ​​para php por causa de algum suporte dedicado ao desempenho na comunidade de código aberto e extrema facilidade de uso. Nodejs sempre permanecerá mais rápido em comparação com outros idiomas.
Minty
De qualquer forma, o ponto é que, como o Drupal fornece uma estrutura impressionante de módulos de serviços, pensei que você poderia compartilhar algum conhecimento sobre o tratamento de dados no lado do cliente, especialmente sobre sessões e outras coisas.
Minty
@Minty Existe um pacote auxiliar para integração ao Drupal no Nodejs: github.com/mikl/node-drupal O manuseio real da sessão depende muito de como / o que você faz. CORS etc, mas geralmente envio o Drupal session_id como um cookie ou no cabeçalho da solicitação.
googletorp
Acabei de ler esta incrível documentação do Backbone github.com/kjbekkelund/writings/blob/master/published/… e pensei: man backbone é uma ótima maneira de organizar seu JavaScript e usá-lo com retornos de chamada AJAX através do sistema de roteamento. Por que não combiná-lo com o Drupal, pois o Drupal depende das mesmas características de roteamento?
AlxVallejo
6

Recentemente, comecei a desenvolver meu primeiro aplicativo de backbone + drupal e estou gostando muito. Usando o módulo Backbone junto com Serviços, Exibições de Serviços e as bibliotecas necessárias. O projeto é bastante simples: criar um carrossel gerenciável de conteúdo de 6 páginas que exibe vários dados, juntamente com um controle deslizante de Notícias adicional que exibe conteúdo diferente. Essa página fica em várias telas sem a interação do usuário; portanto, é necessário atualizar o conteúdo do front-end sem atualizar o navegador. Eu pensei que isso se encaixava perfeitamente em um aplicativo Drupal + Backbone, com o Drupal gerenciando o conteúdo e controlando e sincronizando o backbone com o db. Eu integrei no jquery.cycle 2, que tem uma API incrível e se encaixa bem no estilo de codificação MVC.

Eu posso ver por que as pessoas podem se interessar em usar o Drupal como estrutura de back-end, mas para um aplicativo pequeno como este, o Drupal é leve e rápido . Consegui isso iniciando com uma instalação mínima e escolhendo cuidadosamente os módulos contrib e core. Agora estou em cerca de 50 módulos com pouco menos de 150 linhas de código JS personalizado para o material de backbone e estou praticamente pronto.

Eventualmente, tentarei confirmar isso de volta como um exemplo para o módulo de backbone, pois atualmente não há exemplo que mostre como usar o Views como coleções etc.

Em conclusão:

Vale a pena analisar isso se o seu projeto corresponder bem. Na minha opinião, os problemas de desempenho derivados do peso do Drupal podem ser facilmente combatidos usando mecanismos de cache como o Varnish, ou até mesmo o cache de impulsionamento ou de página principal. A flexibilidade e a velocidade do desenvolvimento do uso do Drupal superam completamente os negativos para mim.

lenço
fonte
5

A resposta básica é sim, algumas pessoas estão usando. Eu não o usei (ainda não encontrei uma boa correspondência de projeto), mas atualmente existe um grupo Drupal para ele, e ele também se encaixaria na Iniciativa Central de Contexto e Serviços da Web, que é uma das Iniciativas do Drupal 8. . Há também uma sessão no DrupalCon Munich 2012, Backbone.js no Frontend .

Ainda não sei se ele está pronto para o horário nobre, mas, na minha opinião, vale a pena criar uma prova de conceito, pois se você tiver algo que possa se beneficiar dele e possa projetar o lado JS em uma interface e não em uma implementação . Isso ajudaria a isolar as alterações de back-end, caso você decida aplicar o Drupal, por qualquer motivo.

mpdonadio
fonte
11
Essencialmente: o Stackexchange é o lugar errado para perguntar sobre isso, já que é um caso tão especial neste momento. Wander sobre sobre a discussão em grupo sobre o VBP
paul-m
MPD obrigado pelo link para o grupo. Provavelmente vou acompanhar lá em cima. Eu fiz algumas perguntas nos grupos de usuários, o que realmente depende de quem está lá. Ainda estou tentando descobrir quando devo iniciar uma pergunta no Stack Exchange. Achei que isso teria mais de uma resposta certa, então parecia um ajuste.
Ryan Preço
3

Você pode achar isso útil: mostra um exemplo de conversão de um script baseado em JQuery em um script de backbone. Obviamente, você precisará acessar o backbone.js, como uma biblioteca usando drupal_add_js ou usando o módulo

https://github.com/kjbekkelund/writings/blob/master/published/understanding-backbone.md/

Craig Moore
fonte
Oi Craig, obrigado pelo link, você tem algum recurso em que isso é usado com o Drupal em específico? Obrigado
Minty