Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Серверный JS (https://javascript.ru/forum/offtopic/22096-servernyjj-js.html)

B~Vladi 12.10.2011 23:10

Цитата:

Сообщение от Андрей Параничев
загрузка файлов на хост с клиента?

Ещё до этого не дошел.
Цитата:

Сообщение от Андрей Параничев
модули придется располагать на разных портах

Вот тут не понял, физически распологать?
Цитата:

Сообщение от Андрей Параничев
значит проблема роутинга у вас не решена вообще

Где про это почитать?
Цитата:

Сообщение от Андрей Параничев
Кстати, просто на всякий случай

Спасибо, буду иметь ввиду.

Андрей Параничев 12.10.2011 23:42

B~Vladi,
У вас эти сервера запускаются на разных портах, а из nginx к ним прокси пасс с субдоменов. Т.е. фактически это максимум можно назвать виртуальными хостами. Но внутри сервера вы как выбираете, какой код будет запускаться, вот у меня например было что-то такое:
Framework({
	"/upload/(\s+)": {
		"json": function(id) {
			return false;
		},
		"html": {
			"get": function(id) {
				this.error(404);
			},
			"post": function(id, postData) {
				return true;
			}
		}
	}
});

Ну это очень примерно.

B~Vladi 13.10.2011 00:22

Так:
module.exports = function(request, response) {
	var serviceName = request.url.match(/^\/([^/]+)/);
	if (serviceName) { // URL состоит из: domain.ru/serviceName/serviceData[/./././]
		serviceName = serviceName[1];
		if (serviceName != 'index' && SERVICES.hasOwnProperty(serviceName)) {
			SERVICES[serviceName](request, response);
		} else { // Если запрос приходит на неизвестный сервис, вызываем код сервера ошибок
			request.headers.error = 404;
			LIB.server.error(request, response);
		}
	} else { // Если имя сервиса отсутствует, вызывается сервис index (главная)
		SERVICES['index'](request, response);
	}
};

module.exports.port = 8001;

// Инициализация сервисов. Так же оформенны в виде модулей.
LIB.fileSystem.readdir(CONFIG.path.services, function(err, files) {
	var length = files.length;
	while (length--) {
		var serviceData = files[length].match(/^([^\.]+).js$/);
		if (serviceData) {
			SERVICES[serviceData[1]] = require(CONFIG.path.services + '/' + serviceData[0]);
		}
	}
});

Этого вполне достаточно.
А о каких проблемах роутинга речь?

x-yuri 13.10.2011 01:50

Цитата:

Сообщение от x-yuri
а оно запросы случайно не в одном потоке обрабатывает?

Цитата:

Сообщение от Magneto
Это что сарказм? В одном потоке, но если я не ошибаюсь то есть вебворкеры и возможность запуска несколько процессов по числу процессоров.

я в общем-то думал о том, что в случае multithreaded/multiprocess веб-сервера, один запрос не может приостановить весь веб-сервер. Не знаю, насколько это аргумент.

Цитата:

Сообщение от Kolyaj
В одном, в этом вся прелесть.

ну это с точки зрения, что не надо синхронизировать

Цитата:

Сообщение от B~Vladi
Вообще если честно я не понимаю, почему говорят что нода для этого плохо подходит.

а какие аргументы?

Цитата:

Сообщение от Андрей Параничев
Некрасивый он, и по внутреннему коду и по тому коду, что я должен под него писать

хм, неужели jquery красивый внутри?

Цитата:

Сообщение от Андрей Параничев
У меня такое ощущение, что его писали не рассчитывая, что на нем будут писать что-то большое.

он основан на sinatra. Его сегодня один человек назвал микрофреймворк. Не знаю точно, что это означает, но он определенно минималистичен. Писали его с расчетом быстрого создания приложений с минимальными усилиями. Т.е. sinatra даже называет себя не фреймворком, а DSL. Можно ли на нем писать что-то большое... не знаю, не пробовал.

B~Vladi 13.10.2011 08:49

Цитата:

Сообщение от x-yuri
а какие аргументы?

Я точно не помню, сложилось такое впечатление.
Недавно на GDD с одним знакомым PHP-кодером состоялся примерно такой диалог:
Я: Я проект на ноде делаю.
Он: Нода же не для этого? Под неё можно только чаты писать.
Я: Почему?
Он: Ну там же асинхронный код, коллбеки везде?
Я: Ну и что?
Он: Ну как ты будешь писать сайт в асинхронном стиле? Это же сложно?
Я: Ну да, сложнее чем синхронный. Берёшь руками и пишешь. Главное шаблонизатор хороший иметь.

В общем он так и не согласился со мной и аргументов никаких конкретных не назвал. Мне и самому интересно, почему же он плохо подходит.

Kolyaj 13.10.2011 11:55

Цитата:

Сообщение от B~Vladi
В общем он так и не согласился со мной и аргументов никаких конкретных не назвал. Мне и самому интересно, почему же он плохо подходит.

Потому что очень сложно PHP-шные мозги (без всякого негатива термин) перестроить на асинхронный JavaScript.

systemiv 13.10.2011 21:36

А как Вы относитесь к реляционным БД в mySql?
Или лучше NoSql?

B~Vladi 13.10.2011 22:16

Цитата:

Сообщение от systemiv
А как Вы относитесь к реляционным БД в mySql?

Глупость написал.

x-yuri 13.10.2011 22:37

Цитата:

Сообщение от systemiv
А как Вы относитесь к реляционным БД в mySql?

ты действильено думаешь, что nosql всегда лучше? Или mysql всегда лучше? Реляционные БД делают упор на целостность и доступность, а nosql-системы на устойчивости к разделению и доступности (теорема САР)

systemiv 13.10.2011 22:47

Сори, я хотел написать в node
x-yuri, не всегда. Но в каких случаях, лучше использовать mySql или например MongoBD


Часовой пояс GMT +3, время: 04:38.