Вчера накатал на PHP скрипт для Twitch API, который находит топ1 стрим по количеству зрителей из заданного списка. Работает он пердец как медленно, PHP для доступа к API использует cURL. Я думаю, это как раз хороший повод для меня попробовать что-то другое. Я посмотрел в гугле, есть такой скрипт. Почитал его, упоминания о cURL там не нашёл, вместо этого там такая конструкция, что по-моему шикарно: Код (Text): request.get({ url: url }, function(err, response, body) {} ); Должно работать быстрее. Как вы считаете? Собссна, тему создал поскольку я не в тренде. Нужен совет стоит ли браться за Node.js сейчас, или уже есть что-то круче?
Если вопрос в том, надо ли изучать новую тему только потому что так вроде бы быстрее, то мой совет — НЕТ.
JS изучить стоит. Ноду, если знаешь JS, поднимешь, в случае чего, без проблем. Главное - сам JS. Ибо он укурен.
Да у меня давно руки чесались попробовать что-то кроме PHP. Отказаться от PHP я не смогу конечно, ибо это мой хлеб. Но я сейчас переписываю один из своих сайтов с нуля, и по-моему это хороший повод попробовать что-то новое. Синтаксис я посмотрел, мне понравился - простой, лаконичный. Сомнения только по-поводу свежести библиотеки, есть уже io.js какой-то. JS полные карманы, я на jQuery собаку съел. Вообще, из того на чём я шкодю, jQuery мне больше всего нравится простотой записи. Поэтому я в сторону Node.js смотрю сейчас, а не Ruby какого-нибудь.
нод хорош для организации всяких сервисов критичных к наличию постоянного подключения к клиенту. Простой веб-сервис на Restapi Тоже будет хорош при требовании обработки большого количества запросов. Всякие месседжеры, чаты и любые другие риал-тайм приложения. Если подобное требуется, то изучать стоит. Заодно и плагины, включая Socket.io как минимум. Совет. Если вы хотите всерьёз писать на "серверном" JavaScript, забудьте то что вы делали во всяких jquery. Это поможет быстрее понять и применять. А потом и по свежему взглянуть на браузерный js.
jQuery != JS. В плане разработки. В jQuery 95% укуренности pure-JS-а нивелировано. Для того такие либы и создаются. Чтобы можно было пользоваться JS-ом не зная тонкостей JS-а, не вдаваясь в дебри его упоротых парадигм и тд и тп. На ноде это не прокатит, боюсь. Там надо знать именно pure_JS-кунгфу.
Да переопределять и наследовать я научился из PHP, смогу применить это в JS, если что. Нашёл кстати неплохой гайд вроде, может ещё кому пригодится: http://www.nodebeginner.ru/
Нет, не сможешь, я гарантирую это. Наследования в JS такие же упоротые и евпанутые, как и все остальное. В этом вся суть JS. Он весь состоит из нихера не интуитивных костылей, эмулирующих то или иное поведение, свойственное другим ЯП. Твои знания PHP вообще никак не решают в данном случае. Так же как и твои знания любого другого языка. Потому что JS у нас осооообенный. И учился в школе для особенных языков программирования.
Лол)) Ну, я то буду с нуля писать, так что меня никто не заставляет использовать упоротые методы многоэтажного переопределения. Мой первый сайт на PHP вообще был в процедурном стиле, с кучей функций без классов, а переменные хранились в глобальном массиве. Потому что мне так было удобно и понятно. И ничего, работал себе, долго прослужил даже. Думаю, с Node.js я тоже не стану сразу изобретать сверх-запутанную систему, а напишу так как удобно мне.
Есть там масса нюансов всё-равно, включая event-driven... Касательно изобретений лишних систем, некоторые плагины и фреймворки поверх него стоит брать сразу. В противном случае увязните. Если цель изучать досконально, а не сразу написать решение, то можно потыкать его палкой подольше.
Не станешь делать запутанные системы, в результате ничего не сможешь сделать вообще. JS весь сделан из запутанных систем. Если хочешь что-то там делать, то нужно сходу, мордой удариться о такие факты, как, например: Функция - это объект. Объект это функция. Функция может иметь методы и прототип. А прототип это одновременно и статический и динамический родитель. При этом понятия статики нет. Но если хочется, можно сделать. Понятия классов тоже нет. Да что уж там, понятия наследования как такового, тоже нет. Два объекта, которые не производные классов, а функции, могут ссылаться на одного предка-прототипа, но каждый по-своему, на свое видение этого предка. При этом, в языке, где нет классов, есть конструкторы. Любая функция, вызванная через new - это конструктор. Но не обязательно так делать, чтобы создать объект. Я молчу о том, что объекты, которые и не объекты вовсе в классическом понимании, а, скорее, хэш-таблицы, у которых некоторые поля являются функциями в силу того, что функция это тоже объект, могут одалживать друг другу методы и обмениваться контекстами. Поверь, эта кроличья нора просто бездонная. JS, пожалуй, один из самых гибких языков на свете. Это его благодать, это его тяжелейшее проклятье. Потому что как следствие - вместо синтаксических конструкций он состоит из сниппетов и "бестпрактис" чуть более, чем весь.
Да там не то что учить, больше переосмыслать саму логику построения приложений. Если в пхп скрипт выполняется построчно, то в ноде всё асинхронно. А ещё, в пхп ты объявил переменную, скрипт закончил работу и переменной больше нет. А в ноде она будет висеть в оперативке, пока ты её не потрёшь. Из-за этого можно зафейлиться например не потерев переменную admin = true. Но зато не надо лазить каждый раз в БД - если ты что-то вытащил, то можно оставить это в оперативке. З.Ы. Мне тут подсказали ещё неплохой видео-курс от создателя javascript.ru, курю пока его: http://www.youtube.com/watch?v=ILpS4Fq3lmw&list=PLsuEohlthX ... KHgBHsd3Dx
Этого уже достаточно, чтобы призадуматься. Сам сейчас активно JS учу по-взрослому и сомнения меня все больше гложат. Стиль, который он навязывает - это просто ад. Сопровождаемость кода стремится к нулю. При том, что не придраться - язык крайне гибкий и динамичный до невозможности просто. Но обратная сторона этой гибкости печалит.