O ile mi wiadomo, wszystkie skrypty JavaScript zostają scalone w jeden plik. Rails robi to domyślnie, gdy dodaje //= require_tree .
się do dolnej części application.js
pliku manifestu.
To brzmi jak prawdziwa oszczędność życia, ale trochę martwię się o specyficzny dla strony kod JavaScript. Czy ten kod jest wykonywany na każdej stronie? Ostatnią rzeczą, jakiej chcę, jest tworzenie instancji wszystkich moich obiektów dla każdej strony, gdy są one potrzebne tylko na 1 stronie.
Ponadto, czy nie ma też potencjału do konfliktu kodu?
A może umieścisz mały script
tag na dole strony, który po prostu wywołuje metodę, która wykonuje kod javascript dla strony?
Czy nie potrzebujesz już wtedy pliku.j.j?
Dzięki
EDYCJA : Doceniam wszystkie odpowiedzi ... i nie sądzę, że tak naprawdę mają problem. Niektóre z nich dotyczą stylizacji i nie wydają się odnosić do innych ... a inne po prostu wspominają javascript_include_tag
... o których wiem, że istnieją (oczywiście ...), ale wydaje się, że drogą do Rails 3.1 jest zakończenie wszystkich JavaScript w jednym pliku zamiast ładowania pojedynczego JavaScript na dole każdej strony.
Najlepszym rozwiązaniem, jakie mogę wymyślić, jest zawinięcie niektórych funkcji w div
tagi za pomocą id
s lub class
es. W kodzie JavaScript wystarczy sprawdzić, id
czy class
na stronie jest ikona lub, a jeśli tak, uruchom kod JavaScript, który jest z nią powiązany. W ten sposób, jeśli elementu dynamicznego nie ma na stronie, kod JavaScript nie działa - nawet jeśli został zawarty w ogromnym application.js
pliku spakowanym przez Sprockets.
Moje powyższe rozwiązanie ma tę zaletę, że jeśli pole wyszukiwania znajduje się na 8 ze 100 stron, będzie działać tylko na tych 8 stronach. Nie musisz także umieszczać tego samego kodu na 8 stronach w witrynie. W rzeczywistości nigdy więcej nie będziesz musiał umieszczać ręcznych tagów skryptowych w swojej witrynie.
Myślę, że to jest właściwa odpowiedź na moje pytanie.
application.js
), a podane przez ciebie odniesienie wskazuje, dlaczego tak jest: pobieranie jest najwolniejsza część procesu wykonywania JS. Wiele małych plików jest bardziej buforowalnych niż jeden duży. Ludzie z Unholy Rails nie zdają sobie zatem sprawy z tego, że ich rekomendacje są niezgodne z zasadami, których starają się przestrzegać, i dlatego ich rekomendacje nie powinny być traktowane poważnie.