Я пытаюсь понять различия между некоторыми более новыми платформами веб-программирования, которые теперь существуют, а именно, Node.js, направляющие и Sinatra.
Кто-то мог дать мне пример приложений, которые работали бы лучше всего над каждой из платформ?
То есть что является приложением, которое подошло бы лучше всего для Node.js в противоположность Rails или Sinatra и что является приложением, которое подходит лучше всего для направляющих в противоположность Node.js и Sinatra и т.д.....
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
.