09.01.2010, 23:08
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Node.js
http://kolyaj.ya.ru/replies.xml?item_no=2953
Цитата:
|
Покопался с Node.js. Для тех, кто не знает -- это такой серверный асинхронный JavaScript. Все три слова для меня ключевые, я люблю JavaScript, я люблю писать на нём в асинхронном стиле, и я давно, но не активно, ищу замену для PHP на сервере, т.к. после создания кода на JS в промышленных масштабах к PHP вернуться не могу. Так что всё, что будет написано, сильно субъективно, впрочем как и всегда.
Я написал на нём парсер логов достаточно кривого формата, которые после парсинга складываются в CouchDB. Т.к. сам Node.js предоставляет только низкоуровневые функции работы с файлами (что, несомненно, хорошо), то пришлось сначала написать функцию, наподобие PHP-шной file, но которая генерирует события по прочтении очередной строки файла (а логи, кстати, многострочные). Вокруг неё уже реализовался класс, генерирующий событие после прочтения очередной записи лога. А обработчик этих событий уже отсылал записи в CouchDB (тоже несколькими строчками). И всё это асинхронно, т.е. одновременно читается файл, одновременно парсится, одновременно отправляются несколько HTTP-запросов и всё это несколькими функциями без всяких потоков.
Вобщем достаточный минимум для серверных приложений в Node.js есть, осталось написать необходимый в виде пары сотен библиотек на любой вкус. Большинство, к сожалению, кинулось реализовывать никому не нужные в данном случае web-фреймворки, хотя есть несколько достаточно оригинальных решений, как например реализация доступа к sqlite, запускающая в отдельном процессе sqlite3 и парсящая её вывод в консоль.
Из особо бредовых на мой взгляд node-XMLHttpRequest, реализующая интерфейс XMLHttpRequest. Тот самый убогий интерфейс, для которого в браузерных фреймворках создают обёртки не ради кроссбраузерности, а ради удобства. При этом в Node.js нормальный HTTP-клиент из коробки.
Короче от использования его в продакшне меня останавливает только вопрос хостинга, т.к. админ из меня некудышный, линуксоид тоже, поэтому я давно не могу решится взять vds, т.к. не знаю, что с ним делать .
З.Ы. Ах да, главный минус -- addListener не принимает контекста вызова колбэка, и я даже не знаю, что с этим делать, кроме повсеместного использования func.bind(), что мне не сильно нравится.
|
|