Anladığım kadarıyla, tüm JavaScript'iniz 1 dosyada birleştirilir. Rails, manifest dosyanızın //= require_tree .
altına eklendiğinde bunu varsayılan olarak yapar application.js
.
Bu gerçek bir hayat kurtarıcıya benziyor, ancak sayfaya özgü JavaScript kodu hakkında biraz endişeliyim. Bu kod her sayfada yürütülüyor mu? İstediğim son şey, tüm nesnelerimin yalnızca 1 sayfada ihtiyaç duyulduğunda her sayfa için somutlaştırılması.
Ayrıca, çakışan kod için de bir potansiyel yok mu?
Yoksa script
sayfanın altına, sayfanın javascript kodunu yürüten bir yöntemi çağıran küçük bir etiket mi ekliyorsunuz?
O zaman artık requir.js'ye ihtiyacınız yok mu?
Teşekkürler
DÜZENLEME : Tüm cevapları takdir ediyorum ... ve gerçekten sorun yaşadıklarını sanmıyorum. Bazıları stil hakkındadır ve birbirleriyle ilişkili görünmüyor ... ve diğerleri sadece bahsettiğini javascript_include_tag
... var olduğunu biliyorum (açıkçası ...) ama ileride Rails 3.1 yolunun hepsini sarmak olduğu anlaşılıyor her sayfanın altına tek tek JavaScript yüklemek yerine JavaScript'inizi 1 dosyaya yerleştirin.
Gelebileceğim en iyi çözüm, div
etiketlerde belirli özellikleri id
s veya class
es ile sarmaktır. JavaScript kodunda, yalnızca id
veya class
öğesinin sayfada olup olmadığını kontrol edersiniz ve öyleyse, onunla ilişkili JavaScript kodunu çalıştırırsınız. Bu şekilde, dinamik öğe sayfada değilse, JavaScript kodu çalışmaz - application.js
Sprockets tarafından paketlenen büyük dosyaya dahil edilmiş olsa bile .
Yukarıdaki çözümüm, 100 sayfanın 8'ine bir arama kutusu eklenirse, yalnızca bu 8 sayfada çalışacağı avantajına sahiptir. Aynı kodu sitedeki 8 sayfaya da eklemeniz gerekmez. Aslında, sitenize bir daha asla manuel komut dosyası etiketleri eklemenize gerek yoktur.
Sanırım sorumun asıl cevabı bu.
application.js
) ve aslında sağladığınız referans bunun neden böyle olduğunu gösterir: JS yürütme sürecinin en yavaş kısmı. Birçok küçük dosya bir büyük dosyadan daha önbelleğe alınabilir. O zaman The Unholy Rails halkı, önerilerinin uymaya çalıştıkları ilkelere aykırı olduğunu ve bu nedenle tavsiyelerinin ciddiye alınmaması gerektiğini anlamıyor gibi görünüyor.