2011-03-05 12 views
11

Bunun bir CoffeeScript sorusu olduğunu düşünüyorum. Backbone sınıflarını foo.coffee dosyasında kullanabilmek istiyorum. Ben coffee komutunu çalıştırırken Backbone gerektirecek -r seçeneği kullanılarak çalıştı:Backbone ve CoffeeScript ile çalışmaya başlayın

coffee -r "../backbone" -c foo.coffee 

derleyici Backbone tanımsız olduğundan şikayet etti. Eminim bu oldukça basit olmalı. CoffeeScript ve Backbone'u birlikte kullanan kişilerin örneklerini bulmak çok kolay.

Backbone.model = require('../../backbone').Model 

class foo extends Backbone.model 

ben initialize yönteminde console.log bunu yazabiliriz: Ben de şöyle dosyanın üstündeki sınıfını gerektiren çalıştı. thisconsole.log'a yazmayı denediğimde, boş bir nesne {} aldım.

Bunu nasıl yapacağımı söyleyen var mı?

cevap

10

Kodunuzun daha fazlasını verebilir misiniz? initialize ile yaşadığınız sorunu kopyalayamadım. İşte benim kod coffee dosyasıyla aynı dizinde backbone.js ile verilmiştir: new foo günü

Backbone = require './backbone' 

class foo extends Backbone.Model 
    initialize: -> 
    console.log this 

new foo 

, initialize denir ve çıkış -r ile konu ile ilgili olarak

{ attributes: {}, 
    _escapedAttributes: {}, 
    cid: 'c0', 
    _previousAttributes: {} } 

olduğunu, bunun iki nedeni vardır çalışmazsa: Birincisi, -r ata olmadan

require '../backbone' 

gerçekleştirir herşeye göre. Omurga globals yaratmadığı için (sadece ihracat), modül require d olduğunda atanmalıdır.

-c ile birlikte -r kullanmak, require d kitaplığını derlenmiş çıktıya eklemez. Bunun yerine, derlemesi sırasında gerektirir. Gerçekten de, -r, yalnızca derleyicinin kendisini genişletebilirsiniz; örneğin, derleme hattına bir önişlemci veya işlemcisi ekleyerek - documented on the wiki.

+0

Yardım için teşekkürler. Tüm yapmaya çalıştığım Coffeescript'te Backbone todos öğreticisini yapmaktı. Omurga repolarını klonladım ve sonra kahve için örnekler altında kendi dizinimi oluşturdum. Uzun lafın kısası, omurga taşınıyor ve altını aynı dizine taşıdım ve yukarıdaki "foo" örneğinde çalıştım. Ayrıca tut için "merhaba dünya" a çıkabiliyordum. Sadece oluşturulan koddaki gereksinim ifadesini ve omurga değişken bildirimini açıkladım. Sonra, beklenen konsol çıktısı ile index.html yükledim. Benim html yüklerimin kahvenin derlemesi gereken libs yüklediğinde daha kolay bir iş akışı var mı? – Paul

+0

Bunu mu demek istediniz? http://stackoverflow.com/questions/5170473/is-there-a-way-to-send-coffeescript-to-the-clients-browser-and-have-it-compiled :) (Bu soruya cevabımı görün Tarayıcı için derleme için daha fazla alternatif için ''' '' '' '' '' '' '' '' '' '' '' 'çok yönlü, ancak her iş için kesinlikle doğru bir araç değildir.' ' –

+0

Tamam. Yeterince adil.Şu anda, Todos'un bir parçası olan 'omurga-localstorage' dosyasına ihtiyacım var. Alt çizgi yüklenmesini bekliyor. Tarayıcıda Todos'u tanımlamaya ve derlemeye gerek kalmadan ... Bu tür bağımlılıkları nasıl yönetebilirim ki derleyebilirim? Todos.coffee sayfamda alt çizgi gerektirip bunu _'e atamayı denedim. Hala "_ tanımlı değil" var. Elbette bariz bir şey eksik miyim ??? – Paul