2011-11-21 21 views
6

Bu html içine gömülen bu kod parçasını http://coffeescriptcookbook.com'dan çalıştırmaya çalışıyorum.CoffeScript: tarayıcıdan çalıştırıldığında tanıma gerektiriyor

net = require 'net' 

domain = 'localhost' 
port = 9001 

connecting = (socket) -> 
    console.log "Connecting to real-time server" 

connection = net.createConnection port, domain 

connection.on 'connect',() -> 
    console.log "Opened connection to #{domain}:#{port}" 
    connecting connection 

connection.on 'data', (data) -> 
    console.log "Received: #{data}" 

connection.on 'end', (data) -> 
    console.log "Connection closed" 

Bu kod dosyasında client.coffe adlandırılır ve ben kahve komutuyla çalıştırdığınızda edilir: kahve client.coffe iyi çalışır ve sunucuya bağlanır, ancak bir html dosyası ve açık onu Embbed zaman Bu hatayı alıyorum: Yakalanmamış ReferenceError: gereksinim tanımlanmamış.

<script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js" 
     type="text/javascript" charset="utf-8" ></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" 
     type="text/javascript" charset="utf-8"></script> 
    <script src="{% get_static_prefix %}functions.js" 
     type="text/javascript" charset="utf-8"></script> 
    <script src="{% get_static_prefix %}jquery.dajax.core.js" 
     type="text/javascript" charset="utf-8"></script> 

    <script src="{% get_static_prefix %}client.coffee" 
     type="text/coffeescript" charset="utf-8"></script> 

Herhangi fikirler:

Benim html komut dosyası etiketlerinin

şöyle?

cevap

5

Bu, tarayıcıda çalışmaz.

İlk sorun: Tarayıcıdaki içeriklerin güvenlik nedeniyle başka sunucular veya bağlantı noktalarına gelmesine izin verilmiyor. Ayrıca, gerçek soket, sadece HTTP almazsınız.

İkinci mesele: require yalnızca node.js kullanmak mümkün olacak bir node.js komutu (Eğer node komutu veya coffee komutuyla CoffeeScript dosyası ile bir javascript dosyası çalıştırdığınızda yani,) 'dir. net modülü node.js'ye aittir ve asla tarayıcıda bu şekilde çalışmayacaktır.

tarayıcıdan içinden gerçek zamanlı olarak sunucuya konuşmak istiyorsanız

, ben WebSockets, flashsockets ve HTTP (bu tarayıcı içinde kullanılabilen) kullanan socket.io modülünü tavsiye ediyoruz.

+0

Teşekkürler ya da hızlı cevap, javascript için yeni olduğumdan beri her iki konu hakkında hiçbir fikrim yoktu. Sunucu ve io soketleri için Connect'i kullanmaya çalışacağım. Çok teşekkürler –

2

node-browserify gibi sarmalayıcılara sahip bir tarayıcıda require'u kullanabilirsiniz. Ancak, @thejh tarafından işaret edilen tüm sorunlar doğru, bu yüzden kodunuzu yeniden düşünmeniz gerekecek.

+0

Evet, yaklaşımım tamamen yanlışmış gibi görünüyor. Şu anda bir web tarayıcısında io çorap kullanımını güzel bir örneği olan "CoffeeScript: hızlandırılmış javascript developmnt" adlı kitaba bakıyorum. Cevabınız için teşekkürler. –