2010-06-04 20 views
7

Artık mevcut olan bazı yeni web programlama çerçeveleri arasındaki farkları anlamaya çalışıyorum: Node.js, Rails ve Sinatra.Birisi bana node.js uygulamasının bir örneğini verebilir mi?

Birisi bana her bir çerçevede en iyi çalışacak uygulamaların bir örneğini verebilir mi? Diğer bir deyişle, Node.js için Rails veya Sinatra'nın aksine ve Node.js ve Sinatra'nın aksine Rails için en uygun olan uygulama hangisi için en uygun olan uygulama nedir? ...

cevap

10

Sinatra ve Rails'in her ikisi de web çerçeveleridir. Yönlendirme, şablon oluşturma, dosya sunumu vb. Gibi ortak web geliştirme soyutlamaları sağlarlar.

node.js çok farklıdır. Temelde node.js, olay odaklı bir standart kitaplık ile birlikte V8 ve olay kitaplıklarının birleşimidir. node.js, Ruby için EventMachine ile karşılaştırıldığında daha iyidir. Örneğin

, burada EventMachine kullanarak, bir olay tabanlı HTTP sunucusu var:

require 'eventmachine' 
require 'evma_httpserver' 

class MyHttpServer < EM::Connection 
    include EM::HttpServer 

    def post_init 
    super 
    no_environment_strings 
    end 

    def process_http_request 
    response = EM::DelegatedHttpResponse.new(self) 
    response.status = 200 
    response.content_type 'text/plain' 
    response.content = 'Hello world' 
    response.send_response 
    end 
end 

EM.run{ 
    EM.start_server '0.0.0.0', 8080, MyHttpServer 
} 

Ve burada bir node.js örnek:

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello world'); 
}).listen(8000); 

Bu yaklaşımın avantajı olduğunu sunucu doesn Her istekte bloke (bunlar paralel olarak işlenebilir)!

node.js, standard library built around the concept of events ürününün tümüyle I/O bağlı olduğu herhangi bir soruna çok daha uygun olduğu anlamına gelir. İyi bir örnek, chat application olacaktır.

Sinatra ve Raylar hem çok rafine, hem de kararlı ve popüler web çerçeveleridir. node.js'nin birkaç web çerçevesi vardır, ancak bunların hiçbiri şu anda bunlardan hiçbirinin kalitesi değildir.

Seçimlerden daha kararlı bir web uygulamasına ihtiyacım olursa, Sinatra veya Rails için giderdim. Daha fazla ölçeklenebilir ve/veya farklı bir şeye ihtiyacım olursa, node.js

İlgili konular