Статьи

Войдите в мир Node.js

Все говорят о Node.js в эти дни, но вы не совсем уверены, что это такое? Или вы просто хотите произвести впечатление на своих друзей с помощью знания ботаника? Эта статья познакомит вас с миром Node.js!

Enter the World of Node

Фон

27 мая 2009 года Райан Даль выпустил первоначальную версию программной платформы с открытым исходным кодом, написанную на JavaScript и C ++. Но почему он назвал это Node? В начале проект, неблокирующий веб-сервер, назывался web.js. Вскоре Райан Даль обнаружил, что веб-сервера недостаточно, поэтому он создал основу для управления взаимодействием между распределенными системами, называемыми узлами, — управляемую событиями неблокирующую систему ввода-вывода.

Приложения Node разрабатываются с использованием JavaScript, поскольку Node основан на движке JavaScript с открытым исходным кодом Google V8. V8 — это тот же движок, который дает Chrome исключительную производительность JavaScript. Это позволяет создавать приложения для каждого устройства, работающего в Linux, MacOS, Windows или SunOS.

Вы также получаете большую библиотеку основных и сторонних модулей Node для решения практически любых задач. Основные модули поставляются в комплекте с Node, а сторонние модули могут быть установлены с помощью диспетчера пакетов Node. И, поскольку Node выпущен под лицензией MIT, вы можете использовать все это бесплатно!

Модули

Модули можно рассматривать как наименьшую часть большой системы. Технически, один исходный файл считается модулем, но часто несколько файлов работают вместе, образуя модуль (или библиотеку). Модули предназначены для решения одной проблемы и только этой проблемы. Приложения могут тогда действовать как клей, который позволяет этим модулям работать вместе.

Node modules

Установка узла

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

Windows

Используйте автоматический установщик для установки Node.

Linux

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

макинтош

Вы можете использовать package, Flink, homebrew или macports для установки Node.

Узел установлен?

Откройте вашу командную строку и введите node -v . Это выведет текущую версию Node в окно терминала. Если вы не видите номер версии, значит, что-то пошло не так, и вам следует попробовать установить снова. Вы также должны убедиться, что менеджер пакетов Node (npm) установлен, введя команду npm -v .

Привет, мир!

Создайте файл с именем hello_world.js . Узел позволяет печатать сообщения на терминал с помощью встроенной функции console.log() . Добавьте следующий код в hello_world.js :

 console.log('Hello World'); 

Чтобы выполнить эту программу, откройте окно терминала и перейдите в каталог, содержащий hello_world.js . В этом каталоге введите командный node hello_world . Эта команда вызывает Node и говорит ему выполнить содержимое hello_world.js . Если все работает правильно, вы должны увидеть сообщение Hello World, напечатанное на терминале.

Основные модули

Как упоминалось ранее, Node поставляется с набором основных модулей . В этом разделе описаны три часто используемых основных модуля, но этот раздел ни в коем случае не является исчерпывающим.

console

Это похоже на функции объекта console предоставляемые большинством веб-браузеров, но вывод отправляется на стандартный вывод ( stdout ) или стандартную ошибку ( stderr ). Вы уже видели console объект в действии в примере Hello World. Стоит отметить, что console используется по умолчанию в каждом приложении Node, то есть вам не нужно явно импортировать ее. Для получения дополнительной информации об этом модуле см .:

http

Когда большинство людей думают о Node, они думают о веб-серверах. Модуль HTTP предоставляет сервер и клиент для работы с трафиком HTTP / HTTPS. В отличие от объекта console , модуль http должен быть явно импортирован в приложение с помощью функции require() (пример этого вы увидите в ближайшее время). Дополнительная информация о модуле http доступна здесь:

fs

Модуль fs предоставляет асинхронные и синхронные функции, которые взаимодействуют с файловой системой. Эта статья не будет вдаваться в подробности о модуле fs , но любопытные читатели будут направлены к предыдущей статье SitePoint по этой теме. Официальная документация по Node и исходный код также доступны в следующих местах:

Простой веб-сервер

Исходный код очень простого веб-сервера показан ниже. Этот сервер использует ранее упомянутый основной модуль http . Сохраните следующий код в web_server.js .

 // Load the "http" module var http = require('http'); // Create a HTTP server // - request comes from the client // - response goes to the client http.createServer(function(request, response) { // Send the HTTP status code "200 - ok" to the request // and set the content type to "text/plain" response.writeHead(200, {'Content-Type': 'text/plain'}); // Tell the server that everything has been sent to the client // so that the server considers this message as complete response.end('Hello World'); // Accept connections on port and IP }).listen(1337, '127.0.0.1'); // Tell the user that the server is up and running console.log('Server running at http://127.0.0.1:1337/'); 

Запустите сервер, введя команду node web_server в окне терминала. Теперь вы можете получить доступ к серверу, открыв ваш любимый браузер и перейдя по адресу http://127.0.0.1:1337/ . Вы увидите наше красивое сообщение Hello World в вашем браузере.

Диспетчер пакетов Node

Если вы хотите использовать больше, чем основные модули, вы не сможете использовать менеджер пакетов Node или npm. npm устанавливает сторонние модули из своего реестра, который содержит более 64 000 модулей. Начиная с версии Node 0.6.3, npm собирается и устанавливается автоматически, так что вы можете сразу его использовать.

Установка пакетов

Наиболее распространенный вариант использования npm — установка модулей из реестра. Чтобы установить модуль, npm install module_name команду npm install module_name , где module_name — это идентификатор модуля в реестре. Например, чтобы установить платформу Express , вы должны выполнить следующую команду:

npm install express

Это установит Express в подкаталоге node_modules вашего текущего каталога. Если вы загляните внутрь node_modules , вы увидите другой каталог с именем express который содержит код для модуля Express. Вы также увидите другой каталог node_modules внутри express . Этот каталог содержит все модули, от которых зависит Express.

Модуль, на который опирается ваш код, называется зависимостью. В нашем примере веб-сервера http является зависимостью, но, поскольку это основной модуль, нам не пришлось беспокоиться об его установке. Если ваш код зависит от стороннего модуля, тогда npm должен знать об этом, чтобы его можно было установить. Информация о зависимостях вместе с другими метаданными о вашем приложении хранится в файле с именем package.json . Этот файл хранится в корневом каталоге вашего приложения и содержит данные JSON.

В качестве примера предположим, что ваш проект зависит от модуля coffee-script . Вам нужно будет включить это в ваш package.json . К счастью, вы можете автоматически обновить package.json при установке модуля с --save аргумента --save , как показано ниже:

 npm install --save coffee-script 

Конечно, у вас, вероятно, еще нет файла package.json , поэтому ничего особенного не произойдет. Мы скоро вернемся к файлу package.json . Пока просто знайте, что предыдущая команда создаст что-то вроде этого в вашем package.json :

 ... "dependencies": { "coffee-script": "^1.7.1" } ... 

Создание пакета

Чтобы создать пакет, вам нужно всего лишь создать файл package.json . Поскольку это обычный файл JSON, вы можете написать его самостоятельно. Однако ожидается, что файл будет содержать определенные поля, и вы легко можете ошибиться. Поэтому рекомендуется использовать команду npm init для автоматической генерации package.json . Эта команда предложит вам ввести важные значения. Пример npm init показан ниже. Значения в скобках являются предложениями, предоставленными npm. Вы можете просто нажать Enter, чтобы принять предложение, или ввести собственное значение, как показано в строке version .

 name: (node-package.json) version: (0.0.0) 0.0.1 description: How to create a new package.json entry point: (index.js) test command: git repository: (git://github.com/TimPietrusky/node-package.json.git) keywords: package, json license: (ISC) MIT 

После того, как вы выполните все приглашения, будет создан файл package.json , содержащий имя вашего проекта (обязательно), версия (обязательно), описание, автор (ы), ключевые слова, хранилище, домашняя страница и другие полезные данные. Предоставляя файл package.json , другой разработчик может легко установить ваш модуль и все его зависимости. Пример файла package.json доступен в этом репозитории GitHub (и любом репо, опубликованном в реестре npm).

Это только самые основы package.json . Если вы хотите погрузиться во все доступные атрибуты, вам следует ознакомиться с package.json .

Вывод

Эта статья предоставила абсолютные основы для работы с Node. Тем не менее, это только вершина айсберга, и Node является одним из наиболее быстро растущих сообществ. Я предлагаю проверить официальную страницу проекта Node для ссылок на код, статьи, видео и многое другое. Также следите за будущими статьями SitePoint, посвященными таким темам, как публикация кода в npm, IDE для разработки Node и провайдеры хостинга, которые работают с Node.

Хотите узнать больше об этом? Наша сестринская компания Learnable имеет совершенно новый курс Node.js !