2010-05-23 24 views
30

benim raylar uygulamaları (tüm 2.3.5) benim satır içi javascript, rjs, prototip ve jquery bir karışımı kullanın. Öğrenmeye ya da büyüyen ağrılar diyelim. Son zamanlarda göze batmayan javascript ile daha fazla nüfuz ettik. Html'yi temizler, aynı şekilde css temizler.raylar en iyi uygulamalar nerede javascript

Ama gördüğüm en örnekler küçük örnekler vardır ve bunlar Şimdi ben oldukça büyük bir uygulama varsa ve benim js yapılandırmaya yollarını düşünüyorum application.js

içindeki tüm javascript (jquery) koydu. Her nasılsa benim senaryom hala görünümüne yakın olduğunu gibi, bu yüzden orders.js o görünüme özgü mütevazi javascript içeren

orders.html.erb 
orders.js 

gibi bir şey düşünüyorum. Ama belki de bu sadece çok muhafazakar olmuyorum :)

Yehuda Katz'ın bu çok sorunu hakkında bir çok yazı okudum here ve here, nerede bu sorunu ele alıyor. Js dosyalarınızdan geçecek ve sadece sizin görüşünüze uygun olanları yükleyecektir. Fakat mevcut bir uygulamayı bulamıyorum.

Yani benim sorular:

  • nasıl en iyi yapıyı da göze batmayan javascript yapmak; Kodunuzu yönetin, bir şeyin ne yapması gerektiğinin html'den açık olduğundan emin olun. Sanırım iyi sınıf isimleri uzun bir yol kat ediyorlar :)
  • Dosyalarınızı nasıl düzenler, hepsini yükler misiniz? sadece birkaç tane? İlgili komut dosyalarını yüklemek için görünümünüzde content_for :script veya javascript_include_tag kullanıyor musunuz? Ya da ...
  • Çok genel işlevler (silme gibi), parametrelerle (ek öznitelikler ekliyor mu?), Veya çok özel işlevler yazıyor musunuz (DRY?). Rails 3’de standart bir set olduğunu biliyorum ve her şey oralarda dikkat çekicidir. Ama Rails 2.3.5 nasıl başlamalı?

Kısaca: raylarda göze çarpmayan javascript yapmak için en iyi yöntemler nelerdir? :)

cevap

10

En iyi uygulama olduğunu düşünmüyorum, ama ne yaptığımı size bildireceğim.

  1. ben public/javascripts/ dizinde kendi amacına sahip için js dosyalarının her bir dizi var. Bazı örnekler, utility.jschat.jsshopping_basket.js ve benzeri olabilir.

  2. asset packager kullanıyorum ve tüm genel kullanım işlevlerim için bir tane büyük yağ koleksiyonu ve yalnızca yönetici için yalnızca bir işlev tanımlayın. Sunucuya gidiş dönüş seferleri çok pahalıya mal oluyor. Temel olarak tek bir bloğa (genel olarak) indirgenen ilk sayfa yüküne tüm j'leri dahil ediyorum.

  3. Sayfalarda temel $(document).ready kancaların inline olmasına izin veriyorum ve bunları gerçekten kısa tutuyorum.

  4. Js dosyalarının erişmesi gereken veriler sayfayla satır içi hale getirilir. (Genellikle DOM, bazen vars - Ör var xyz = 100.)

  5. Ben genellikle javascript ile benim denetleyicileri kapalı geliştirmek (ve emin tüm eserlerini yapmak), sonra ben açın ve gerektiğinde birkaç if request.xhr? serper.


Unutmayın, Raylı 3.1 yerleşik bir iyi uygulama tanıtır, bkz: http://guides.rubyonrails.org/asset_pipeline.html - Yeni boru hattı ile performans ve yapılandırma sorunları vardı kişisel bir not üzerine, ancak diğerleri harika oldu onunla başarı.

+0

Bu çok ilginç. Tamamlandı. Hala başkalarının söylemek istediği şeylerle ilgileniyorum. – nathanvda

3

Son zamanlarda nasıl olduğumu belgeledim managing javascript in Ruby on Rails. Temel olarak, her biri uygun bir ad alanına sahip çok sayıda küçük, granüler dosyaya bölünür ve daha sonra bunları asset_packager kullanarak üretim için tek bir dosyada birleştiririm.

+0

Görünümler için denetleyicinizle aynı adı taşıyan bir .js dosyasını otomatik olarak nasıl yükleyebildiğinizi seviyorum. Bu en azından iyi bir başlangıç ​​gibi görünüyor :) – nathanvda

1

Aynı sorunu çözmeye çalışırken bu mesajı buldum, ancak mevcut çözümlerin hiçbiri bana doğru olanı göstermedi. Yaklaşımımı yazdım here. Rails'in konfigürasyon konusundaki sözleşmesini seviyorum, bu yüzden aynı yaklaşımı sadece belirli bir eylem sayfasına uygulanabilen Javascriptler dahil etmek istedim. Başka bir şey yoksa, seçeneklerinizi eklemek için en azından başka bir yaklaşımdır.

+0

Önerinizi gerçekten çok beğendim ve gerçekten çok hoşuma giden şeylere çok yakın. Şu anda yaptığım şey, js'leri denetleyici başına dosyalara ayırmaktır, fakat sonra bir tane büyük birleşik js içinde chuck'dur çünkü bu daha hızlı yüklenir (ayrı dosyalar ton yerine 1 büyük js). – nathanvda

İlgili konular