Backbone: Construções personalizadas de backbone

Criado em 29 ago. 2012  ·  18Comentários  ·  Fonte: jashkenas/backbone

Achei que uma ótima atualização para a versão 1.0 do Backbone seria dividir todos os Módulos do Backbone (Eventos, Modelo, Visualização, Coleção, Roteador, Sincronização) em arquivos separados e fornecer aos usuários a capacidade de fazer construções personalizadas com uma ferramenta de construção como o Grunt e / ou DownloadBuilder.js. O que você acha? Se você estiver interessado, eu faria algum trabalho e emitiria uma solicitação de pull.

change wontfix

Todos 18 comentários

Seria ótimo.

Se você estiver interessado em como eu modularizei a base de código Backbone.js, verifique a pasta customBuild dentro de minha bifurcação de backbone. Lembre-se de que todos os testes de unidade do Backbone ainda passam com êxito.
https://github.com/gfranko/backbone/tree/modularBuilds

Além disso, aqui está um exemplo de como uma IU de construção personalizada funcionaria:
http://gregfranko.com/backbone/customBuild/

Finalmente, aqui está uma postagem do blog que escrevi para discutir o uso potencial de apenas algumas partes do Backbone:
http://gregfranko.com/blog/backbone-dot-js-convincing-the-boss-guide/

Eu realmente aprecio a ideia, especialmente a parte em que as dependências do ruby ​​se foram e o grunhido entra em cena.

Também há situações em que não preciso do Backbone.Router (Porque não tenho smth. Para rotear, mas ainda gosto de usar o Backbone para organizar meu JavaScript).

Além disso, isso vai muito bem com compilações personalizadas LoDash (uh, espero que ninguém se sinta chateado).

@asciidisco Ainda não fiz o trabalho de integração de builds personalizados com o Grunt. Você tem uma ideia de como abordaria isso?

@gfranko Gostaria de ver uma implementação semelhante à do jQuery (desde 1.8 eles também têm compilações personalizadas),
talvez eu bifurque seu projeto e experimente neste fim de semana, mas não tenho certeza se tenho tempo suficiente :(

@asciidisco Não se preocupe com isso. Vou dar uma olhada no arquivo grunt do jQuery neste fim de semana para ver como eles estão fazendo isso.

: +1: para modularizar a base de código

Embora vários arquivos sejam frequentemente úteis, não acho que o Backbone se beneficiaria em dividir a fonte. A biblioteca é bastante pequena, portanto, as compilações personalizadas economizarão apenas alguns kilobytes, no máximo, enquanto a complexidade adicional seria significativa.

Pelo que vale a pena, isso foi discutido pelo menos uma vez anteriormente em # 65.

E quanto aos casos de uso, por exemplo, quando um usuário está usando jQuery Mobile com Backbone.js e não deseja incluir Rotas de Backbone?

Eu concordo que a fonte de Backbone padrão deve permanecer como um arquivo, mas eu estava sugerindo que dividir a fonte em vários arquivos (eu percebi que isso é mais trabalhoso para manter) também poderia ser adicionado no caso de um usuário não querer um recurso específico.

Além disso, sugeri em meu blog que permitir que os usuários não incluíssem todos os recursos do Backbone tornaria o Backbone ainda mais fácil de usar em um ambiente corporativo.

E só por curiosidade, qual seria a complexidade adicional?

E quanto aos casos de uso, por exemplo, quando um usuário está usando jQuery Mobile com Backbone.js e não deseja incluir Rotas de Backbone?

Basta excluí-lo da fonte. É claramente rotulado e muito fácil de fazer.

E só por curiosidade, qual seria a complexidade adicional?

Estou me referindo à complexidade para colaboradores novos e existentes. Escrever código para um novo projeto é sempre assustador e queremos encorajá-lo tanto quanto possível. Atualmente, o Backbone requer apenas um navegador que servirá arquivos locais e um editor de texto. Exigir um sistema / ferramenta de construção é um grande passo à frente.

Dito isso, não me oponho a construções customizadas em geral e gosto da ferramenta que você introduz na postagem do seu blog. :)

Você está certo, cada objeto da classe Backbone é claramente rotulado (é por isso que foi tão fácil para mim dividir a base de código). Dito isso, não acho que a maioria dos desenvolvedores queira tocar no código-fonte da biblioteca que estão usando.

Veja Require.js e scripts não compatíveis com AMD como exemplo. É fácil envolver uma lib dentro de um método define, mas quem quer fazer isso?

Mas sim, eu ouvi o que você está dizendo sobre não tentar introduzir muitas dependências / complexidades. Acho que vou apenas manter isso como um projeto separado e manter o código atualizado com a fonte do backbone.

Sim - acho que é um projeto muito legal ... mas o Backbone se beneficia por ser um script simples e único. Se você tem o Backbone instalado, você o tem, ponto final, e você pode confiar que tudo o que ele oferece estará disponível.

braddunbar: Basta excluí-lo da fonte. É claramente rotulado e muito fácil de fazer.

Gah, é uma armadilha! Ter um sistema de compilação oficial para garantir qualidade, compatibilidade e funcionalidade é melhor.

jashkenas: Sim - acho que é um projeto muito legal ... mas o Backbone se beneficia de ser um script simples e único.

Sim, eu também gosto de arquivos individuais, e é por isso que o Lo-Dash é um arquivo único, mas ainda suporta compilações personalizadas (embora o jQuery o faça funcionar com arquivos individuais em seu repo).

As compilações personalizadas são ótimas e fornecem aos desenvolvedores mais controle. Com Lo-Dash e jQuery suportando construções personalizadas, a única coisa que falta é o Backbone; D

Ei,
se algum de vocês estiver interessado, eu fiz um plugin grunt para ter compilações de Backbone personalizadas geradas a partir de
os arquivos de origem do backbone "normais": https://github.com/asciidisco/grunt-backbonebuilder

Realmente não testado até agora (embora eu execute uma versão de backbone com todo o roteador e as coisas de histórico deixados de fora), que funciona
Nós vamos. Feedback bem-vindo.

@asciidisco Obrigado,

Seria bom se mudássemos para browserify ou webpack, dessa forma teríamos o melhor dos dois mundos (vários arquivos e um único arquivo) facilmente.

Seria bom ter Events como módulo separado. Bastante útil ao construir módulos personalizados com dependências opcionais Model s e Collection s.

Estou usando o modelo e coleção de backbone em meus projetos Angular e AngularJS. Eu só preciso do modelo e da coleção porque o conceito o conceito é incrível. Estou usando é como camada de acesso a dados. Angular está fornecendo a camada de interface do usuário.

Recentemente escrevi um artigo sobre como você pode se beneficiar do uso do BackboneJS em um aplicativo Angular: https://docs.google.com/document/d/1ptYmQzjq8EWLKyqFENqyXwzz67VNWzh_-clhy4W5R40

Seria muito bom dividir o BackboneJS em vários componentes para que você pudesse incluir apenas o que precisa.

@jashkenas Que tal dividir os arquivos src em vários arquivos e deixar uma tarefa de construção concatá-los em um arquivo para que você tenha os dois:

  • um único arquivo simples
  • e dividir os arquivos de origem
    ?
Esta página foi útil?
0 / 5 - 0 avaliações