Использование Node.js - Для каких препятствий он стремится создать рампу? - PullRequest
7 голосов
/ 01 апреля 2011

Я пытаюсь разобраться, где вписывается Node. Это ниша, так сказать ... Какие препятствия нацелены Node для обеспечения рампы?

Я прочитал примеры и увидел несколько демонстрационных видео. И все это выглядит очень гладко ... Создание простого веб-сервера; создать простой чат-сервер TCP / IP; используя Node в качестве JSON-интерфейса для сервера базы данных ... Но где он вписывается? Я имею в виду, кроме последнего примера, что тут делать с Node?

Полагаю, я спрашиваю: для чего бы вы использовали Node? А почему?

Ответы [ 6 ]

14 голосов
/ 01 апреля 2011

Убеди босса

Список причин для использования узла:

  • Скорость.V8 быстрый.Это быстрее, чем python, это быстрее, чем php.
  • Evented IO.IO сделано правильно.Нет проблем с потоками, все работает легко и просто.
  • Низкоуровневый веб-сервер.Хороший контроль над абстракцией в динамическом языке.
  • JavaScript.Отличный язык с большим опытом разработчиков в написании асинхронного кода.Разработка быстрая, а обслуживание приятное, так как все можно сделать на одном языке (на стороне клиента, на стороне сервера, для доступа к базе данных).

Библиотеки и инструменты, которые можно использовать с node.js:

  • express.js : MVC Web Framework.Очень легкийДает вам маршрутизацию и просмотры.Строит поверх connect.js.Из коробки гибкое управление представлениями и маршрутами с поддержкой нескольких css и шаблонизаторов.Как и в случае с самим node.js, он упрощен и дает вам полный контроль над вашим веб-сервером.Лично я нахожу баланс между контролем и абстракцией по праву.
  • socket.io : де-факто абстракция веб-сокета.Встроена поддержка изящной деградации, поэтому браузеры без веб-сокетов используют кометные методы или флэш-мост.Позволяет общаться между клиентом и сервером без проблем, просто и в режиме реального времени.
  • now.js : Создает поверх socket.io и предоставляет вам синхронизированное пространство имен по всемуклиент и сервер.Позволяет тривиально вызывать серверные методы с клиента или наоборот.

Все эти библиотеки основаны на том факте, что node.js позволяет обрабатывать все на низком уровне и что связь склиент является гладким и оптимизированным, потому что вы используете один и тот же язык с обеих сторон.

Для меня выгодно то, что у меня есть одна и та же библиотека MVC backbone.js на клиенте и сервере,Весь код моей модели используется повторно.Модели на клиенте и сервере синхронизируются тривиально по now.js .

Доступ к моей базе данных осуществляется с помощью cradle (или mongoose ) который все написано на JavaScript.На самом деле мой MVC напрямую связывается с базой данных и легко сохраняет мои модели.Модели определяют полезные методы, такие как save и fetch для постоянного хранения базы данных.Я не касаюсь базы данных вручную, потому что мой MVC позволяет мне подключить драйвер базы данных, чтобы сделать это для меня.

Визуализация моих шаблонов выполняется с помощью EJS , мойпредставления делятся между клиентом и сервером.Просто много повторного использования кода, и вся моя веб-разработка выполняется на JavaScript, что означает, что мне не нужно менять свою парадигму или стиль кодирования.

У меня также нет проблем с решением, как мне обращаться с серой областью между тем, что живет на сервере, и тем, что живет на клиенте, потому что эта серая область была полностью сглажена, и клиент и сервер интегрируются незаметно.

Если вы собираетесь написать сложное динамическое ajax-веб-приложение, то node.js является идеальным кандидатом.Если у вас будет статический веб-сайт, то node.js является идеальным кандидатом (вы настроите его за 20 минут).

Если вы собираетесь написать серверный веб-сайт с небольшими функциональными возможностями на стороне клиентаи постбэки тогда, может быть, вам лучше использовать php или ASP.NET.Но если вы делаете это, вам следует изучить более динамичную функциональность на стороне клиента и использовать ajax.

3 голосов
/ 01 апреля 2011

скважинный узел подходит для поддержания большого количества открытых соединений (с другими узлами, службами и т. Д.) В целом.

это должно дать вам представление о его производительности по сравнению с другими (+ обсуждение в качестве бонуса): Масштабируемый стек против node.js против Twisted против Eventlet

Узел также подходита также язык сценариев оболочки / терминала, хороший пример: github.com/indexzero/forever

И в качестве javascript @ решения на стороне сервера - сокращает разрыв между внешним интерфейсом (html / js) и внутреннимтекущий случай nodejs) решения.

Вы также можете найти это полезным: Список проектов, приложений и компаний, использующих Nodejs

3 голосов
/ 01 апреля 2011

Я считаю, что одно из сильных сторон Node.js - это его пригодность в качестве сервера websockets .Соединения в Node.js дешевы (потому что вокруг них очень мало фреймворка), и поэтому одна система может поддерживать много постоянных соединений.

2 голосов
/ 01 апреля 2011

Вы можете получить множество вариантов использования node.js, если, например, взглянуть на страницу modules . Он варьируется от множества библиотек, таких как маршрутизаторы, статические файловые серверы, веб-фреймворки и серверы WebSockets, до множества специальных модулей подключения БД, автономных баз данных, серверов TCP / IP и популярных оболочек протоколов / библиотек, которые все ждут, чтобы их использовали для создания другого безумия. как эти компании сделали.

Я бы сказал, что вы захотите использовать node.js в том случае, если вы хотите воспользоваться преимуществами легкой, низкоуровневой и быстрой серверной инфраструктуры, которая использует четный ввод-вывод и предлагает богатый набор библиотек с открытым исходным кодом, управляемых сообществом (вам следует или, скорее, должны также знать JavaScript до определенного уровня), чтобы создавать другие модули или использовать его в качестве основы для отдельного проекта (или в качестве дополнения для конкретной функциональности, которая node.js может работать лучше, чем другие решения).

1 голос
/ 23 мая 2011

на данный момент я использую отличный изометрический игровой движок, написанный на node.js сеть создала пути, видовые окна, камеры, карты .. если вам захочется создать MMO для миллионов ppl .. тогда можно использовать node.js.

1 голос
/ 01 апреля 2011

Хороший вопрос! Как вы сказали, кодирование с помощью Node быстрое и простое. Однако это не единственный быстрый и простой инструмент, так что же делает его уникальным? Я с нетерпением жду других ответов!

Мой вклад: одним из преимуществ использования Node является то, что вы можете писать как код на стороне клиента, так и на стороне сервера, в JavaScript. Это дает вам возможность повторного использования кода, которую вы не получили бы в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...