forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   Node.js для новичка (http://forum.boolean.name/showthread.php?t=18081)

DarkInside 10.04.2013 12:27

Node.js для новичка
 
Приветствую, булчане :)
Понадобилось мне для своего проекта(система управления освещением с использованием цифрового протокола передачи данных) написать браузерное приложение для диагностики и управления осветительными сетями.
Начал копать и наткнулся вдруг на node.js, все вокруг кричат и слюнями брызжут, что это технология будущего, мол php на кол, php+ajax проигрывает по скорости в 70-90 раз тому же node.js, движок V8 и бла бла бла...

Ok
Повёлся, начал копать в сторону node.js, надо сказать, достаточно интересный экземпляр, судя по описанию на форумах, видео на ютубах, и даже квадрокоптеры могут программироваться на том же самом node.js, что тоже весьма интересно.
Цитата:

Nodecopter — управление квадрокоптерами на Javascript
Ok
В состоянии аффекта пошёл читать форумы...
Сразу скажу, что опыта клиент-серверного программирования у меня 0.
Т.е. я представляю, как это всё устроено в теории, но никогда руки не дотягивались до создания клиент-серверного приложения.
Также стоит отметить, что опыта работы с JavaScript или подобными языками у меня тоже 0.
ООП я тоже особо никогда не щупал, писал я только на Blitz3D, AutoIt, немного PureBasic, ну и html знаю. Соответственно, ни в одном из этих языков и речи не шло про нормальный ООП, Блиц со своими типами только нарушил моё представление, я всегда думал, что это и есть простейшая реализация ООП, а вот теперь понимаю, что каша в голове.

Ok
Посмотрел код на форумах, ничерта не понял, пошел искать учебник из серии "node.js для чайников".
Нашёл.
http://nodebeginner.ru
Дошел до середины и понял, что немного запутался в понятиях ООП, да и вообще не мешало бы подучить основы JS.

НО
Как известно, JavaScript JavaScript'у рознь и мне нужен правильный "продвинутый" JavaScript, который используется в Node.js

В связи с этим:

1) Кто уже щупал Node.js и представляет о чем там речь, посоветуйте литературу, написанную понятным языком про основы "правильного" JS.
2) Также неплохо было бы твёрдо освоить принципы ООП, которые используется в "правильном = node.js" JavaScript. Может посоветуете какую-нибудь статью или мануал?
3) Да и вообще неплохо было бы почитать о клиент-серверном программировании, про запросы, блокирующие/неблокирующие операции и т.д.

Заранее спасибо! :)

Alex7Kom 10.04.2013 14:14

Ответ: Node.js для новичка
 
1) http://learn.javascript.ru/ Не обращайте внимания, что это про клиентский JS, так как разницы на уровне самого языка нет.
2) node.js не обязывает использовать ООП, но про ООП в JS там же, по ссылке из п.1
3) Здесь можно вернуться к упомянутому nodebeginner.ru, про блокирующие/неблокирующие операции и асинхронность node.js есть замечательная статья http://habrahabr.ru/post/150788/ (там же на хабре по тегу Node.js много статей). Про клиент-сервер важно понимать концепт веб-сервера, но тут увы, ничего конкретного посоветовать не могу, можете попробовать начать со статьи в википедии, проясняя для себя непонятные места.

Удачи :)

moka 10.04.2013 14:56

Ответ: Node.js для новичка
 
Пишу на node.js уже более года. Ходил на gamehack'и, и делал мультиплеер html5 игры за менее чем 24 часа.
По работе используем в текущем проекте node.js + mongodb как основные серверные технологии. Кодить в кайф.

Но важно понимать, что node.js весьма молодой, и как любая технология имеет технологический энтузиазм в виде эйфории публики, что чаще всего сопровождается упадком к нормальному восприятию технологии. Крч, не нужно ожидать от node.js убийцы всего. Это отдельного типа технология, и имеет свою нишу. Конечно она делает кучу разных задач в разы проще, но со многими она не справляется, как и любая другая технология.

Для web API или WebSockets - это конечно один из самых популярных выборов сейчас (тех кто не завязан на ограничениях тормозящего бизнеса).

JavaScript - это скрипт. И такого сильного OOP в нём нету как в том же C#. Основное что сбивает столку это то что function - это и функция и объект, и класс. Зависит от использования и применения.

Самое же главное про server-side JS это не OOP а event-driven парадигма.
Node.js работает в одном потоке - также как и Blitz3D. Но важное отличие в том что там очередь позади этого главного потока. В эту очередь скидываются все асинхронные вызовы функций, таймеров, интервалов и т.п.
Например можно сказать: "через 100мс с текущего момента, вызови 'эту' функцию".
Или: "когда пришло сообщение, вызови 'эту' функцию".
Они будут вызваны асинхронно, в одном и том же потоке, но потом, ты не знаешь когда точно.

Далее важно понимать суть closures - это бракетов. И как переменные доступны внутри них (типо локальные), и вне их. Например создавая новую функцию ты имеешь доступ к переменным которые объявлены в теле блока где эта функция создаётся, и так выше и выше по цепочке вызовов до глобального блока видимости.

Сперва тебе нужно разобраться с примитивами самого JS, переменные, массивы, объекты, функции. И немного .prototype - это методы для классов.
Тогда уже можешь двигаться писать смело на node.js, можешь и сразу писать, сперва без веб частей, а тупо JS.
Для web'а, проще заюзать express.js. Там всё примитивно и просто.

Литература? Ну книг я бы не читал по этому топику. Лучше мелкие статейки или конкретная инфа по модулям или функциям - так ты мыслить будешь динамично в области языка и технологии, а не по шаблонам.
Тем более я не встречал хорошей общей литературы по этим технологиям чтобы дать хорошее знание. Ты верно сказал: JS, JS'у рознь.

Крч, начинай кодить, поставь node, заюзай npm пару раз (там всё просто), и начинай кодить.
Будут вопросы - задавай, поможем.

DarkInside 10.04.2013 17:41

Ответ: Node.js для новичка
 
Спасибо, буду пробовать :)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot