Em todos os exemplos (cabeçalho, jogo de palavras etc.), eles têm um único arquivo de modelo HTML. Existe algum grande projeto de software livre Meteor com muitos arquivos de modelo HTML diferentes que podemos usar como exemplo de prática recomendada? Não parece prático colocar tudo o que um aplicativo grande precisa em um arquivo de modelo.
165
Respostas:
Junte tudo isso! Dos documentos:
fonte
Como no FAQ não oficial de meteoros, acho que explica bastante como estruturar um aplicativo grande:
Saiba mais: Perguntas frequentes sobre meteoros não oficiais
fonte
mobile-config.js
?Eu concordo com yagooar, mas em vez de:
Usar:
Os principais arquivos. * são carregados por último. Isso ajudará a garantir que você não tenha nenhum problema de pedido de carga. Veja a documentação do Meteor, http://docs.meteor.com/#structuringyourapp , para mais detalhes.
fonte
O Meteor foi projetado para que você estruture seu aplicativo da maneira que desejar. Portanto, se você não gostar da sua estrutura, basta mover um arquivo para um novo diretório ou até dividir um arquivo em várias partes, e para o Meteor é praticamente o mesmo. Observe o tratamento especial dos diretórios cliente, servidor e público, conforme especificado na página principal da documentação: http://docs.meteor.com/ .
Apenas agrupar tudo em um preenchimento de HTML certamente não surgirá como uma prática recomendada.
Aqui está um exemplo de uma estrutura possível: em um dos meus aplicativos, um fórum de discussão, organizo por módulo ou "tipo de página" (página inicial, fórum, tópico, comentário), colocando arquivos .css, .html e .js para cada tipo de página juntos em um diretório. Eu também tenho um módulo "base", que contém códigos .css e .js comuns e o modelo mestre, que usa {{renderPage}} para renderizar um dos outros módulos, dependendo do roteador.
Você também pode organizar por função
Espero que algumas estruturas de práticas recomendadas mais específicas e convenções de nomenclatura surjam.
fonte
Para quem está pesquisando no Google sobre este tópico:
A
em
ferramenta de linha de comando (da EventedMind, o pessoal do Iron Router) é muito útil ao montar um novo aplicativo Meteor. Isso criará uma boa estrutura de arquivos / pastas. Se você já trabalha em um aplicativo e deseja reorganizá-lo, basta configurar um novo projetoem
e usá-lo como inspiração.Consulte: https://github.com/EventedMind/em
E aqui: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
fonte
Eu acho que a estrutura de arquivos do Discover Meteor Book é realmente boa e um começo sólido.
fonte
Criar pacotes
É claro que nem tudo se encaixa nessa abordagem, mas em aplicativos grandes, você terá muitas funcionalidades que podem ser isoladas. Qualquer coisa separável e reutilizável cabe nos pacotes, o restante segue a estrutura de diretórios usual, como mencionado em outras respostas. Mesmo se você não criar pacotes para evitar a sobrecarga, estruturar o código de maneira modular é uma boa ideia (consulte estas sugestões )
O Meteor permite um controle refinado sobre como você carrega seus arquivos (ordem de carregamento, onde: cliente / servidor / ambos) e o que o pacote exporta.
Acho especialmente útil a maneira mais fácil de compartilhar a lógica entre os arquivos relacionados. Digamos, por exemplo, que você queira fazer alguma função util e usar em arquivos diferentes. Você apenas o torna "global" (sem o
var
) e o Meteor o agrupa no espaço para nome do pacote, para que não polua o espaço para nome globalAqui está o documento oficial
fonte
Depois de um tempo fora da codificação meteorjs, fico feliz por ter algum tempo livre para dedicar à construção de um jogo online bastante complexo. A estrutura do aplicativo foi uma das minhas primeiras preocupações e parece que vários programadores muito bons defendem o método somente de pacote de estruturar um aplicativo, o que permite que você junte livremente pacotes funcionalmente distintos. Existem outras vantagens na abordagem e dois artigos muito bons que explicam a abordagem podem ser encontrados aqui:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -padronizar
fonte
Temos um grande projeto (provavelmente um dos maiores projetos de Meteor que alguém já construiu até hoje, pois estava em desenvolvimento em tempo integral por 1,5 anos). Usamos o mesmo conjunto de nomes de arquivos em cada visualização. É muito consistente e nos ajuda a navegar rapidamente para exatamente o que estamos procurando:
É assim em um projeto:
Os modelos relacionados são armazenados apenas juntos no mesmo arquivo. O conteúdo
view/order/checkout/templates.html
mostrado foi recolhido aqui:Usamos subpastas quando as visualizações ficam complexas com várias partes:
Também desenvolvemos com o WebStorm, um editor extremamente poderoso e flexível para o desenvolvimento do Meteor. Achamos imensamente útil ao pesquisar e organizar nosso código e trabalhar de forma produtiva.
É um prazer compartilhar detalhes a pedido.
fonte
Use a CLI do andaime da Iron-Cli. Torna as coisas muito fáceis.
https://github.com/iron-meteor/iron-cli
uma vez instalado. use
iron create my-app
para criar um novo projeto. Ele criará a seguinte estrutura para você. Você também pode usar isso em projetos existentes. useiron migrate
no diretório do projeto.fonte
Estou seguindo o formato padrão da mattdeom, que já inclui o roteador e o modelo de ferro (Coleção2). Ver abaixo :
fonte
Existem várias abordagens diferentes para estruturar seu aplicativo. Por exemplo, se você tiver um roteador e modelos de página diferentes, e no interior de cada modelo de página houver muitas partes da página e assim por diante, eu estruturaria isso dependendo da semântica do nível superior> inferior.
Por exemplo:
Obviamente, você pode colocar seus modelos de notícias na pasta comum, como também pode usá-los em páginas diferentes.
Eu acho que é o melhor que você estrutura seu aplicativo de uma maneira que você se sinta confortável.
Eu escrevi um pequeno aplicativo aqui: http://gold.meteor.com E é tão pequeno que eu uso apenas um arquivo html e apenas um arquivo template.js .. :)
Espero que ajude um pouco
fonte
Há uma nova classe no Evented Mind chamada Configurando Projetos de Meteoros que aborda isso, mas também fala sobre a configuração do projeto e a configuração do seu ambiente de desenvolvimento.
No vídeo Estrutura da aplicação na classe: O Meteor não tem uma opinião muito forte sobre como sua aplicação deve ser estruturada, mas aqui estão algumas regras:
1) Ordem de carregamento - O Meteor vai primeiro ao local mais profundo do diretório de arquivos e processa os arquivos em ordem alfabética
2) cliente e servidor são pastas especiais que o Meteor reconhece
Nossa estrutura fica assim:
O todos_controller estende o RouteController, algo que vem com o Iron Router.
A
em
ferramenta mencionada acima também está recebendo uma grande atualização no momento e deve estar muito melhor e disponível em: https://github.com/EventedMind/emfonte
Também estou procurando as melhores práticas para aprimorar e dimensionar meus aplicativos por meio de uma arquitetura bem concebida. Todas as práticas mencionadas acima funcionam para aplicativos de pequeno e médio porte, mas falham quando você trabalha em uma equipe maior. Existem várias maneiras de tentar:
1) Segui esta estratégia: https://github.com/aldeed/meteor-autoform para dimensionar e reutilizar modelos. O autor tem uma ideia muito boa sobre o design de componentes e campos. No momento, estou implementando porque a comunidade desenvolveu 36 pacotes que cobrem quase todos os casos e eu posso usar o TypeScript para ter segurança de tipo durante a fase de desenvolvimento.
Aqui está uma boa postagem no blog sobre como fazê-lo: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ , bem como aqui: http: // meteorpedia .com / read / Blaze_Notes
2) Este parece tão promissor, mas não foi atualizado recentemente. É um pacote escrito em script de café chamado. Os Blaze Components ( https://github.com/peerlibrary/meteor-blaze-components ) para Meteor são um sistema para o desenvolvimento fácil de elementos complexos da interface do usuário que precisam ser reutilizados em seu aplicativo Meteor. Você pode usá-los no CoffeeScript, vanilla JavaScript e ES6. A melhor coisa é que os componentes são OOP. Aqui está um de seus exemplos:
3) Gosto de tipos e transpiler que me dizem onde e quando algo dará errado. Estou usando o TypeScript para trabalhar com o Meteor e encontrei o seguinte repositório: https://github.com/dataflows/meteor-typescript-utils , parece que o criador tentou realizar uma abordagem MVC.
Infelizmente, este projeto não é mantido ou desenvolvido ativamente.
4) e acho que já foi mencionado, você pode escalar usando pacotes. Isso requer uma boa maneira abstrata de pensar. Parece funcionar para o Telescope: https://github.com/TelescopeJS/Telescope
5) extensão de modelo de meteoro - fornece várias maneiras de copiar auxiliares de modelo, manipuladores de eventos e ganchos entre modelos, permitindo a reutilização de código; uma desvantagem é que todas as cópias devem ser cuidadas por um desenvolvedor, muitas vezes repetidas vezes, o que se torna problemático à medida que a base de código cresce; além disso, sem uma comunidade de API claramente definida, não é possível criar e compartilhar componentes
6) Componentes de fluxo - Os componentes de fluxo estão mais próximos do React no design da API, enquanto o Blaze Components mantém conceitos familiares como contextos de dados e auxiliares de modelos; Os componentes de fluxo, por outro lado, ainda usam manipuladores de eventos baseados em modelo, enquanto os componentes do Blaze os tornam métodos de classe, para que seja mais fácil estendê-los ou substituí-los por herança; em geral, o Blaze Components parece ser mais orientado para OOP; Os componentes de fluxo ainda não foram lançados oficialmente ( créditos de texto para # 5 e # 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
Os números 2 e 3 também precisam ser acostumados, mas você ganhará velocidade de desenvolvimento ao longo do tempo. O número quatro permite criar e testar componentes para tornar seu código mais estável. O número três vem com a vantagem da segurança de tipo completo do Typescript, que é uma grande vantagem quando você desenvolve uma equipe com documentação insuficiente. No entanto, atualmente estou portando o número dois para o TypeScript, porque me sinto muito confortável em trabalhar com ele e não preciso alterar o pacote do compilador para que ele funcione com o Meteor quando não estou usando o Gulp.
Ainda é difícil encontrar o caminho certo para trabalhar com o Meteor. Você precisa descobrir por si mesmo, caso contrário, você acaba com uma estrutura de pastas bem organizada, mas não tem idéia de onde está tudo. Feliz codificação.
fonte