2010-06-04 79 views
7

我想了解一些现在存在的较新的web编程框架,即Node.js,Rails和Sinatra之间的区别。有人可以给我一个node.js应用程序的例子

有人能给我一个最适合每个框架的应用程序的例子吗?

也就是说,什么是最适合Node.js的应用程序,而不是Rails或Sinatra,以及什么是最适合Rails的应用程序,而不是Node.js和Sinatra等。 ...

回答

10

Sinatra和Rails都是Web框架。他们提供常见的Web开发抽象,如路由,模板,文件服务等。

node.js是非常不同的。在核心上,node.js是V8和事件库的组合,以及面向事件的标准库。与Ruby的EventMachine相比,node.js更好。

例如,这里是一个基于事件的HTTP服务器,使用EventMachine的:

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 
} 

而且这里有一个Node.js的例子:

var http = require('http'); 

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

这种方法的好处是服务器没有按不会阻止每个请求(它们可以并行处理)!

node.js有其整个standard library built around the concept of events这意味着它更适合任何I/O限制的问题。一个很好的例子是chat application

Sinatra和Rails都是非常精致,稳定和流行的Web框架。 node.js有几个web框架,但目前它们都不属于这两种框架的质量。

在选择中,如果我需要更稳定的Web应用程序,我会选择Sinatra或Rails。如果我需要更高度的可扩展性和/或多样性,我会去node.js

相关问题