Может кто-нибудь дать мне пример приложения node.js - PullRequest
7 голосов
/ 04 июня 2010

Я пытаюсь понять различия между некоторыми из новых платформ веб-программирования, которые сейчас существуют, а именно Node.js, Rails и Sinatra.

Может ли кто-нибудь дать мне пример приложений, которые лучше всего работают на каждой из платформ?

То есть, какое приложение лучше всего подходит для Node.js, а не Rails или Sinatra, и какое приложение лучше всего подходит для Rails, а не Node.js, Sinatra и т. Д ... ..

1 Ответ

10 голосов
/ 07 июня 2010

Sinatra и Rails являются веб-фреймворками. Они предоставляют общие абстракции веб-разработки, такие как маршрутизация, создание шаблонов, обслуживание файлов и т. Д.

node.js очень отличается. По своей сути, node.js представляет собой комбинацию V8 и библиотек событий вместе со стандартной библиотекой, ориентированной на события. node.js лучше, чем EventMachine для Ruby.

Например, вот 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 есть вся стандартная библиотека , построенная на концепции событий , что означает, что она намного лучше подходит для любой проблемы, связанной с вводом / выводом. Хорошим примером может служить приложение чата .

Sinatra и Rails - очень изысканные, стабильные и популярные веб-фреймворки. В node.js есть несколько веб-фреймворков, но на данный момент ни один из них не соответствует ни одному из них.

Если бы мне не понадобилось более стабильное веб-приложение, я бы выбрал Sinatra или Rails. Если бы мне нужно что-то более масштабируемое и / или разнообразное, я бы выбрал node.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...