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