Para meu entendimento, todo o seu JavaScript é mesclado em um arquivo. O Rails faz isso por padrão quando adicionado //= require_tree .
à parte inferior do seu application.js
arquivo de manifesto.
Isso soa como um salva-vidas real, mas estou um pouco preocupado com o código JavaScript específico da página. Esse código é executado em todas as páginas? A última coisa que quero é que todos os meus objetos sejam instanciados para todas as páginas quando forem necessários apenas em uma página.
Além disso, não há potencial para códigos que colidem também?
Ou você coloca uma pequena script
tag na parte inferior da página que apenas chama um método que executa o código javascript para a página?
Você não precisa mais do require.js?
obrigado
EDIT : Agradeço todas as respostas ... e não acho que elas estejam realmente entendendo o problema. Alguns deles são sobre estilo e não parecem se relacionar ... e outros apenas mencionam javascript_include_tag
... o que eu sei que existe (obviamente ...), mas parece que o caminho a seguir do Rails 3.1 é encerrar tudo seu JavaScript em um arquivo, em vez de carregar o JavaScript individual na parte inferior de cada página.
A melhor solução que posso encontrar é agrupar certos recursos em div
tags com id
s ou class
es. No código JavaScript, você apenas verifica se o id
ou class
está na página e, se estiver, executa o código JavaScript associado a ele. Dessa forma, se o elemento dinâmico não estiver na página, o código JavaScript não será executado - mesmo que tenha sido incluído no enorme application.js
arquivo compactado pelo Sprockets.
Minha solução acima tem o benefício de que, se uma caixa de pesquisa for incluída em 8 das 100 páginas, ela será executada apenas nessas 8 páginas. Você também não precisará incluir o mesmo código em 8 das páginas do site. Na verdade, você nunca mais precisará incluir tags de script manuais em seu site.
Eu acho que essa é a resposta real para minha pergunta.
application.js
), e na verdade a referência que você forneceu indica por que é assim: o download é o parte mais lenta do processo de execução do JS. Muitos arquivos pequenos têm mais cache do que um arquivo grande. O pessoal do Unholy Rails parece não perceber, então, que suas recomendações são inconsistentes com os princípios que estão tentando aderir e, portanto, suas recomendações não devem ser levadas a sério.