Kahve kodunda ön uç kodumuzu yazdığımız bir web hizmetinin uygulanması üzerinde çalışıyorum. Tökezlediğim problem, proje büyürken işlevselliğin farklı dosyalarda ayrılması gerektiğidir. Gerçekten ihtiyacım olan şey, utils.coffee
dosyasında, her sayfadan gereken genel işlevlere sahip olacak ve her bir ayrı dosyada, page_foo.coffee
page_bar.coffee
özel işlevlere sahip olacak basit bir yapıdır. Nasıl düzgün bir şekilde yapılandırabilirim, bu yüzden ilk olarak utils.coffee
yüklendiğinden ve herkesten erişilebilir olduğundan emin miyim?Birden fazla CoffeeScript dosyasını düzenleme
cevap
gae-init projesinde nasıl yapıldığını kontrol edebilirsiniz (Yasal Uyarı: Ben yaratıcıyım).
Temel fikir, belirli bir dizindeki tüm *.coffee
dosyalarına sahip olmanız ve ardından tüm dosyaları derleyen ve bunları doğru yollara yerleştiren bir oluşturma komut dosyası olmasıdır.
Kolaylıkla hata ayıklamak isteyebileceğinizden, bunu geliştirirken, derleme betiği bunları derlemek için bir seçeneğe sahip olmalı ve &'u birleştirmek için başka bir seçeneği küçültün.
Teşekkürler. Cevabımı değiştirdim çünkü sadece bunun çok tuhaflığı. Kahve için yalnızca performans açısından optimize edilmiş bir yapı değil, yaygın olarak kullandığım harika bir takım yığını sağlar. – topless
Bir yanıtı “kabul etmeyeceksin” diyemedim bile :) Bu rotaya giderseniz, CoffeeScript'in kendi [kek] (http://coffeescript.org/#cake) yardımcı programına bakmalısınız (yığında bir dil daha o zaman) –
Bu iyi bir fikir, ancak aynı ada sahip 2 dosya sahibi olmanızı engeller, örneğin, view/navItem ve models/navItem – dezman
Uygulama siparişi tarayıcılarda dikkate alınır, bu nedenle önce utils.js
'u ekleyin.
CodeKit (http://incident57.com/codekit/) gibi bir araç, bir .js
içine tüm .coffee
dosyalarını bir araya getirebilir ve küçültebilir, bu da bir kabuk betiği ile çok kolaydır.
Uygulamanız çok büyükse, require.js ve Asynchoronous Module Loading numaralı telefondan okuyun. Bu çok kolay bağımlılıklarını yönetmek ve sadece gerekeni yük sağlayacaktır:
# page_foo.coffee
define ['lib/utils'], ($) ->
// code that uses 'utils'
+1 - bizim için gerçekten iyi çalışıyor. – domenukk
Ne yapmam örnek
task 'build', 'join and compile *.coffee files', ->
exec "coffee -j #{outJS}.js -C#{strFiles}", exerr
için, önceden belirlenmiş bir sırayla dosyaları katılmak ve derlemek için bir pasta görev yazmaktır Burada outJS
derlenmiş JavaScript ve strFiles
dosya adının bir dosya adı dizesi olduğu
Ek olarak YUICompressor veya favori aracınızı kullanarak derlenmiş kodu küçültmek için görevler ekleyebilirsiniz. Ve geliştirme izlerken sırasında, birleştirme derleme da
task 'watch', 'watch and compile changes in source dir', ->
watch = exec "coffee -j #{outJS}.js -cw #{strFiles}"
watch.stdout.on 'data', (data)-> process.stdout.write data
emin olarak
this gist CoffeeToaster ile
size onlardan üstündeki gerekir dosyaları dahil yeteneğine sahip göz at otomatik hale getirilebilir Son ".js" dosyanız (aynı zamanda tüm CoffeeScript dosyalarınızın bir birleşimi olacak) tarayıcının içinde kullanmak için her şeyin uygun düzende olmasını sağlar.
dokümanlar üzerinde bir göz atın:
http://github.com/serpentem/coffee-toaster
Bu kadar isterseniz sınıflarına bildirimleri ad alanları olarak klasörün hiyerarşisini kullanacak etkinleştirildiğinde, sonra da olabilir sınıfları uzanan bir ambalajlama sistemi ile de geliyor yapı yapılandırması son derece minimalist
#<< another/package/myclass
class SomeClass extends another.package.MyClass
: gibi birden fazla dosya gibi ithalat ve oğlu yapmak
# => SRC FOLDER
toast 'src_folder'
# => VENDORS (optional)
# vendors: ['vendors/x.js', 'vendors/y.js', ... ]
# => OPTIONS (optional, default values listed)
# bare: false
# packaging: true
# expose: ''
# minify: false
# => HTTPFOLDER (optional), RELEASE/DEBUG (required)
httpfolder: 'js'
release: 'www/js/app.js'
debug: 'www/js/app-debug.js'
Hata ayıklama işlemlerini ve diğer kullanışlı özellikleri kolaylaştırmak için dosyaları tek tek derleyen bir hata ayıklama seçeneği bile var.
Karmaşık bir ad alanını nasıl gösterebilirim örn. acme.sales.admin böylece bu benim app için kök olduğunu? –
Bu klasörleri birbirinizin içinde yaratır ve dosyalarınızı "acme/sales/admin/yourfile.coffee" içine yerleştirirsiniz. –
CoffeeToaster [üretilmiyor] (https://github.com/arboleya/coffee-toaster/wiki) ve [Polvo] (https://github.com/polvo/polvo) yeni bir proje için çatal attı. –
- 1. Bir html dosyasını birden fazla sunucuya bağlama
- 2. CoffeeScript String Karşılaştırma CoffeeScript yılında
- 3. Bir kerede birden çok 7z dosyasını birden fazla klasörde ayıklayın.
- 4. CoffeeScript: coffeescript yılında
- 5. Birden fazla html dosyasını kullanarak, kullanıcı arabiriminde UI
- 6. Coffeescript
- 7. Coffeescript
- 8. NodeJS - birden fazla nesne birden fazla dosya üzerinde aynı ad
- 9. Jersey için Birden Fazla ContainerRequestFilter
- 10. Birden fazla set nasıl kesişir?
- 11. Birden fazla depo içeren bir klasörde birden fazla bölme
- 12. jQuery Birden Fazla Dinamik Formdan Birden Fazla Dinamik iFrame'ye
- 13. Gcc ile birden fazla __attribute__ birden fazla gc
- 14. Birden Fazla Kritere Göre Bir Diziden Birden Fazla Nesne Çekme
- 15. Birden fazla çekirdek kullanmıyor mclapply
- 16. com.android.ddmlib.AdbCommandRejectedException: birden fazla aygıt
- 17. Birden fazla INNER JOIN
- 18. UINavigationBar'da Birden Fazla UIBarButtonItemsi
- 19. Denetleyicide Birden Fazla Rota
- 20. GWT: birden fazla kelimenin
- 21. birden fazla koşul
- 22. Birden Fazla Laravel Diğer
- 23. Güncelleme birden fazla satır
- 24. Concatenate birden fazla liste
- 25. yükleniyor birden fazla dosya()
- 26. Bir DOT dosyasını birden çok grafikte GVPR kullanarak birden fazla DOT dosyasına nasıl bölersiniz?
- 27. Birden çok girdi dosyasını değiştirin
- 28. Komut satırında birden fazla browserify dönüşümü nasıl belirlenir?
- 29. Ben CoffeeScript
- 30. Ember.JS && Coffeescript
Bu, CoffeeScript'e özgü değil, JavaScript ile ilgili genel bir sorun. Bu söyleniyor ... ["Coffeescript kodunun oluşturulması?"] (Http://stackoverflow.com/questions/6150455/structuring-coffeescript-code) ve özellikle benim cevabım [burada] (http://stackoverflow.com)/sorular/6150455/strüktür-CoffeeScript-kodu/8303780 # 8303780). Require.js için – shesek