有人可以给我一个node.js应用程序的例子

时间:2010-06-04 12:31:12

标签: ruby-on-rails sinatra node.js

我正在尝试理解现在存在的一些较新的Web编程框架之间的差异,即Node.js,Rails和Sinatra。

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

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

1 个答案:

答案 0 :(得分:10)

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

node.js非常不同。在它的核心,node.js是V8和事件库的组合,以及面向事件的标准库。与EventMachine for Ruby相比,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