08Sep

868d4746549e43a4966d9bffb8677889

Следующая возможность NPM, которую мы с вами рассмотрим, это глобальные модули. Любой модуль можно поставить глобально, если добавить флаг (-g)

npm –g i express.

Как видим, не получается это сделать, потому что глобально – означает в системную директорию. Если операционная система поддерживает ограничение доступа, то, как правило, от обычного user в системную директорию я писать не имею права. Для этого, в данном случае, у меня Mac, я сделаю запуск через команду sudo. Если у вас Windows, то, скорей всего, у вас и так все работает. Там директория глобальных модулей почему-то находится внутри каталога user.

Итак, оно скачивается, ставится. Чем глобальная установка отличается от обычной?

  1. В первую очередь, это местом. Глобальные модули ставятся в стандартную системную директорию.
  2. Второе отличие это то, те binary , которые есть в свойстве bin package.json будут поставлены по системному пути. Это означает, что express’ binary  я теперь могу вызвать просто вот так.

Любые дальнейшие операции с глобальными модулями осуществляют также, как с обычными, но с флагом –g:

npm –g up express

или просто

npm –g up

чтобы все модули up были глобальными, которые только стоят.

Или npm –g r express – удалить express.

Зачем вообще нужны глобальные модули?  Перед тем, как об этом говорить, развеем часть заблуждения, связанную со словом «глобальный».
Глобальный  – обычно означает доступный на уровне системы, доступный всем. Глобальная переменная – это та, к которой можно обратиться откуда угодно. В данном случае, слово глобальный используется по историческим причинам. Когда-то так и было, но сейчас, если модуль поставлен глобально, то это не означает, что он автоматически становится доступен всем. То есть, несмотря на то, что я поставил express глобально, если где-нибудь сделаю require(“express”), то оно модуля не найдет. Глобальный, в данном случае, означает, скорее, системный.

Основное применение глобальной установки модуля – это сделать доступным binary  по системному пути. Например, есть ряд утилит, которые написаны для Node.JS, скажем, есть утилиты uglify-js, которыми сжимают js файлы. Эту утилиту я могу поставить глобально:
npm –g i  uglify-js

Когда она будет стоять глобально, то я получу uglify-js по системному пути, который могу вызывать.

Таким образом, если обобщить, глобальные модули – это модули, которые используются для системных нужд. Как правило, это различные утилиты. Глобальный модуль не становится автоматически доступен везде, его можно “прилинковать” к приложению с использованием команды

npm link express.

если хотите, посмотрите и help, но это не рекомендуется.

tumblr_inline_nn489p271Z1t68bpr_500

 

Материал урока взят из следующего скринкаста

We are looking forward to meeting you on our website soshace.com

21. Уроки Node.js. Writable Поток Ответа res, Метод pipe. Pt.2

По окончании файла наступит событие end, в обработчике которого мы завершим ответ вызовом res.end. Таким образом, будет закрыто исходящее соединение, потому что файл полностью отослан. Получившийся код является весьма универсальным:

9. Уроки Node.js. События, EventEmitter и Утечки Памяти

Следующий объект, который нас интересует, это EventEmitter или, как его иногда называют, ЕЕ. EventEmitter представляет собой основной объект, реализующий работу с событиями в Node.js. Большое количество других встроенных объектов, которые генерируют события, ему наследуют. Для того чтобы воспользоваться EventEmitter достаточно подключить модуль “events”встроенный и взять с него соответствующее свойство (создадим ee.js) :

var EventEmitter = require(‘events’).EventEmitter;