NodeJS и все с ним связанное
Уважаемые профи JS. Я понимаю, что тут каждый сам за себя, но имеет место быть ветке "NodeJS" на этом форуме? Ведь мы центральный источник программирования на JS или нет?
Предлагаю сделать ветку и там выносить даже нубские вопросы как установить, как запустить, как кодить и т.п. на этом серверном языке. Понимаю, языку не так много как PHP|Ruby|Perl и подобным, но покопавшись в инете, почитав уже текущие возможности, понял - за этим языком - будущее вэб программирования. И начал копаться как же его юзать, какие на текущий момент существуют хостинги, его поддерживающие и т.п. Информации пока не много накопал. Везде критика, что ПХП не умрет, ноде далеко до пхп и т.п. А покопавшись до тестов по скорости, нод обходит все серверные языки по скорости исполнения ой как сильно. Посмотрев, что многие уже его крутят (где то было сообщение Kolay)? решил не отставать. Но успехи пока небольшие. Если кто его уже научился крутить так сказать "как свои 2-3-4-5 пальцев" - делитесь пошагово как и что делать. Рылся как его ставить, оказалось на винду его поставить проблемно, а ставить *nix неохото. Как считают другие? Если нет - буду дальше сам рыться. П.С. http://nodejs.ru - информации не много и не мало. Но все равно Серверный JavaSсriрt: знакомимся с Node.JS для тех кто слышал но даже не углублялся в подробности Node.js - Механический мир тоже неплохо |
PeaceCoder, ну я на VPS ставил на FreeBSD 8, установка заняла меньше 5 минут, сразу запустился. Связывал NodeJS с Socket.IO, конечно пришлось немного помучиться с этим но зато получил рабочий отличный комет-сервер например для онлайн-игры или крутого чата. В статье "Socket.IO и Node.js: пробное использование" об этом подробно говорится. Но дальше пока не заходил, потому что времени не было, но сейчас собрался перенести серверную часть своего проекта на NodeJS, поэтому сейчас буду его активно осваивать дальше. Здесь буду делиться интересными результатами и впечатлениями.
P.S. по поводу хостинга: мне кажется лучше взять VPS или VDS и не париться, лично я за 350 рублей в месяц дешёвый VPS взял и отлично уже около года работаю. P.P.S. вообще я тоже за создание отдельной ветки форума по NodeJs, всё-таки это центральный ресурс JavaScript =). |
Цитата:
На винду его ставить очень легко http://node-js.prcn.co.cc/ Но виндовая версия не всё умеет (dns не резолвит, например), да и не все библиотеки работают под виндой. Поэтому линукс под рукой желательно иметь. У меня для этого VirtualBox, в котором запущена убунта в режиме headless. Это такой режим без какого либо интерфейса, просто консолька, не жрущая много ресурсов. В убунту хожу по ssh. VirtualBox вообще вещь хорошая, безотносительно node. По поводу фреймворков (Connect, etc) -- если хочется научиться и в принципе не горит, то лучше начать без них. Прочувствовать асинхронное программирование в целом и NodeJS в частности. На первых порах будут получаться нечитаемые лесенки колбэков, нужно научиться от них избавляться. Это не призыв к рассово-неверным фреймворкам, которые делают вид, что код синхронный (do, например). По поводу хостинга: у меня самый дешёвый firstvds, мне его хватает. Ну у меня и сайты не сильно загруженные. Совсем я бы сказал не загруженные :) По поводу живых примеров: некогда упоминаемые пасьянсы работают на NodeJS. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
А что там за JS вы говорите - вот эта база ? |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
по поводу раздела на этом форуме... ну пока слишком мало вопросов, мне кажется. А вообще все в ваших руках, заспамьте этот форум вопросами про node.js :) |
Цитата:
Вообще список библиотек, упрощающих асинхронный код https://github.com/ry/node/wiki/modules в разделе Flow control / Async goodies |
Цитата:
Асинхронность - интересно, но не особо нужно. В PHP тоже чето есть, хотя лично я - не проверял. События - ну я понимаю событийное программирование когда события идут от пользователя или ОС в реальном времени. А сервер - где основная задача - быстрей отдать страницу. И алгоритм в основном просто последовательно достает данные, необходимые для этой страницы. Какие там события? |
Цитата:
Цитата:
|
По мне так с NodeJs + Express или Djangode очень комфортно работать. Они имеют встроенные мощные шаблонизаторы.
|
Меня самое большее интересует. Динамическая подгрузка скриптов сущесвует в ноде или так и надо все пихать в 1 файл?
И еще я так понял, что то, что вне createServer компилируется и исполняется 1 раз (глабальная область), а то что внутри - исполняется при запросе клиента? |
Цитата:
require Цитата:
|
так а серьезно, есть какие-то преимущества? Я, для себя, вижу только одно - использование js на сервере. А фразы типа "за этим языком - будущее web-программирования"... я лучше промолчу
|
Цитата:
Цитата:
http://habrahabr.ru/blogs/webdev/108241/ http://habrahabr.ru/blogs/nodejs/104171/ http://habrahabr.ru/blogs/javascript/108760/ Цитата:
ps: кто-нибудь знает планируется ли добавление в него статической типизации? upd: меня больше всего волнует безопасность, если с тем же php все понятно, то как тут быть? |
Цитата:
|
Цитата:
1. NodeJS сам себе сервер. Точнее в скрипте на NodeJS можно создать сервер, который и будет отвечать на запросы. А можно сервер не создавать, если скрипт будет не сайтом, а чем-то другим. Т.е. если для PHP нужен Apache, то NodeJS самодостаточен, хотя я предпочитаю ставить перед ним nginx. 2. Скрипт на NodeJS запускается единожды и выполняется всё время работы сайта. В отличие от PHP, который запускается в момент запроса, после чего убивается. Поэтому весь код со всеми библиотеками парсится единожды при запуске, что не может не добавлять скорости. 3. В NodeJS на все запросы отвечает один процесс, соответственно легко шардить данные между запросами. Поэтому серверная часть чата на NodeJS пишется лёгким движением левой руки, в то время как на PHP нужно искать пути шардинга данных между процессами (обычно используется база). 4. NodeJS сам себе сервер, поэтому он сам решает сколько ему держать запрос. NodeJS может держать тысячи ждущих соединений, это ему ничего не стоит. В отличие от PHP в котором на каждый запрос создаётся процесс. Поэтому Comet сервер на NodeJS делается лёгким движением левой руки, в то время как на PHP нужно искать специальные библиотеки. Это то, что я считаю плюсами. Особо хочется отметить распространённое заблуждение, что NodeJS это круто, потому что один и тот же язык на сервере и на клиенте. Язык хоть и один и тот же, но окружения разные. Поэтому и все библиотеки разные и стиль кодирования разный. И точно также, как с PHP, есть серверные скрипты, а есть клиентские, и они никак не пересекаются. |
Kolyaj, А что с серверной безопасностью (инъекции и пр.)?
|
А что с серверной безопасностью может быть? А что в PHP с серверной безопасностью? Как скрипт напишешь, так он и полетит.
|
Цитата:
Пример: я знаю что PHP при каждом запросе грузит скрипт-компилирует-исполняет-выдает-выгружает. Как обстоит делао с техникой в ноде? |
При запуске загружает-компилирует-выполняет. При запросе вызывается функция. Если в любой момент будет вызван require, соответствующий файл загрузится-скомпилируется-выполнится. Если этот файл уже загружен в другом месте, то выполнятся он больше не будет, просто ссылка на модуль будет возвращена.
|
Цитата:
|
Цитата:
Теперь вопрос в другом: возможно ли переписывать стандартные функции типа require? например как в браузере alert и т.п.? И еще. Если сделать типа LIB = require('./lib/lib.js'); то будет например видна LIB!==undefined в другом подгружаемом файле? и вобще каким образом можно увидеть уже существующие переменные в require файлах? Например как global в php П.С. не охота тратить время на тесты. Охота узнать ключевые моменты языка, остальное вроде уже разобрался. библиотек куча написано, кстати как их подключать пока не разобрался (если я правильно понял, надо их скопировать и также просто сделать require) |
Цитата:
Цитата:
Цитата:
Цитата:
Есть ещё объект global, он один и тот же во всех файлах. Но мне, например, он ещё ни разу не пригодился. |
Цитата:
Цитата:
П.С. извини за наивные вопросы, ты опытен, тебе быстрее ответить чем мне прочитать кучу инфы что бы это узнать, а это важно для меня. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
итого, получается, node.js выигрывает в не очень стандартных задачах Цитата:
Цитата:
|
Цитата:
git clone https://github.com/raycmorgan/Muи через несколько секунд уже модуль в папке лежит. |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
ну вот ты сам все сказал :) но на самом деле, я не сказал, что он проигрывает на стандартных задачах. У меня просто нету повода сказать, что он выигрывает (есть только теоретические доводы относительно производительности), или что он проигрывает. Я ж вообще его даже ни разу не ставил :) Но у меня сложилось впечатление, что там еще не все есть, не все работает, но развивается быстро
p.s. ни читайте эту статью: http://abrdev.com/?p=1161 http://www.xakep.ru/post/53583/default.asp |
ставил себе как-то cygwin 10гб оказываться занимает :blink: накладно если FreeBSD уже стоит;)
где-то читал, что можно в установку cygwin уложиться в 1ГБ если загружать только необходимые пакеты, но как понять что там нужно, а что нет? upd: разобрался как на FreeBSD поставить)) |
Цитата:
|
Цитата:
|
Сегодня столкнулся с первой небольшой проблемой, вчера при перезагрузке сервера БД Redis отключилась и сегодня при подключении нода ровно через минуту 15 секунд выбрасывало в консоли ошибку такого рода:
node js ETIMEDOUT, Operation timed out IOWatcher.callback (net:870:22) Далее вспомнил про бд и запустил бд, ошибка пропала. То есть получается если нода не может подключиться к какому-нибудь модулю типа коннектора к БД выбрасывает ошибку что и в принципе следовало ожидать. Может кому-нибудь поможет данная наводка. |
сегодня наткнулся на статью И.Сысоева про NodeJS, хотелось бы узнать на сколько объективно его устарели?
знаю, что за прошлый год у V8 регулярно закрывал баги, и недавно 25 января вышло обновление релиза.... |
Статья у Сысоева про V8, а не про NodeJS. NodeJS не встраивает V8 в сервер, он делает из V8 сервер.
|
Часовой пояс GMT +3, время: 03:25. |