Руководство для начинающих по Node.js и NPM

Как начать работу с Node.js и диспетчером пакетов Node

Сегодня я познакомлю вас с самыми основами Node.js и NPM, включая объяснения того, как разрабатывать для Интернета в целом. Сразу предупреждаю: если вы знакомы с основами веб-разработки и NPM, вы можете пропустить эту статью и узнать больше об очень полезном NPX здесь.

Ок, отлично! Давайте начнем!

Node.js

Если вы читаете это, вы, вероятно, уже загрузили Node.js + NPM и начали с того, что окунулись в воды Javascript. Но первые шаги уже могут показаться пугающими: «Я просто хочу написать небольшую программу на Javascript, зачем мне все остальное?». Это понятно, но на самом деле ничего страшного.

Давайте начнем с самого начала: вы можете просто создать файл Javascript на любом месте вашего компьютера, обозначенный суффиксом «.js». Этот файл может быть заполнен кодом любым удобным для вас способом, но при этом не хватает одной вещи: как вы на самом деле запускаете свою программу? Вот где Node.js вступает в игру.

Node.js — это среда выполнения, специально предназначенная для Javascript. Как следует из описания, Node может запускать ваш код Javascript в определенной среде, которую сам Node предоставляет. Процесс всегда один и тот же: сначала вы запускаете Node.js, а когда Node запускается (что означает, что он закончил запуск), вы можете предоставить ему свой код Javascript.

Есть два способа передать ваш Javascript в Node в качестве входных данных:

  1. Напрямую к запущенному Node-процессу, построчно, без файлов
  2. Сообщая Node, какой файл Javascript загружать, без какого-либо построчного ввода
node

Построчно

После того, как вы успешно установили Node.js (это просто загрузка + запуск установщика, описания есть на веб-сайте Node), вы можете запустить Node.js из любого места либо в своем терминале (macOS/Linux), либо в PowerShell (Windows) . Команда выглядит так.

Да, это все! Вы только что успешно запустили Node! Вы заметили, как быстро это произошло? Одна из причин популярности Node.js заключается именно в его невероятно быстрой загрузке (среди прочего).

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

(Hit enter after every line end) 
const greet = (name) => console.log("Hello, " + name);
greet("Tom"); let x = 10; x = x + 5; 

(enter the following line to terminate node)
.exit

Теперь это все хорошо и модно, но написание больших приложений требует, чтобы мы сначала набросали их в файлах, прежде чем отправлять в Node. Следующую главу, пожалуйста!

Ввод через файлы

Для этого примера вам понадобится текстовый редактор. По сути, вы можете использовать любую программу, которая может работать с текстом (например, TextEdit в macOS или Editor в Windows). Я рекомендую VS Code с открытым исходным кодом от Microsoft, но вы можете выбрать то, что лучше всего подходит для вашей эргономики.

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

Если вы используете VS Code, вы можете использовать его встроенную командную строку, просто щелкнув правой кнопкой мыши в представлении проводника и вызвав «Открыть в коде» (в Windows) или перетащив каталог, содержащий файл, на значок кода VS в доке (macOS). Затем вы можете открыть его терминал, как описано здесь.

Когда терминал будет готов, просто введите следующую команду.

node app.js

Как видите, произошло несколько вещей:

  1. Узел запущен напрямую, без пользовательского ввода
  2. Node прогнал весь ваш файл сверху вниз, пока не достиг его конца
  3. Сам узел завершился, так как конец файла также означал конец его процесса.

И для базового ознакомления с Node.js самое то! После того, как вы загрузили Node и впервые испытали использование командной строки для запуска собственного приложения Javascript, построчно или из файла, вы официально стали разработчиком Javascript! Добро пожаловать в клуб!

Теперь я познакомлю вас с основной концепцией NPM. После следующей главы мы быстро рассмотрим связь между Node.js, NPM и веб-разработкой. Если вы хотите узнать больше о Node.js, вы можете ознакомиться с нашими историями о Javascript, цепочках инструментов и обо всем, что связано с кодированием, здесь. Я также связал некоторые полезные ресурсы в конце этой статьи, чтобы узнать еще больше.

Хорошо, давайте переместим один!

NPM, менеджер пакетов узлов

Как вы видели, управлять собственным кодом не так уж и сложно. Приложение может быть сохранено в файле, внесенные вами изменения останутся. Но что, если вы захотите использовать чужой код, скажем, криптографическую библиотеку или библиотеку обработки изображений? Вы каким-то образом должны поместить этот код рядом с вашим собственным, сделать его пригодным для использования в вашем приложении и держать все под контролем.

Наивным подходом было бы просто загрузить внешний код непосредственно из источника, например. Github и скопируйте библиотеку файл за файлом в свой собственный проект. Но это приводит к нескольким проблемам:

  • Как лучше всего обновить этот внешний код? Копирование вручную — не лучшее решение.
  • Как вы отслеживаете весь внешний код?
  • Что, если сам этот внешний код опирается на библиотеки, которые не установлены в вашем проекте?

Все эти проблемы решает NPM, менеджер пакетов для Node.js. Работа менеджера пакетов в основном состоит в том, чтобы дать вам надежное решение о том, как добавлять, отслеживать и удалять внешний код, также известный как зависимости. Вот несколько примеров NPM в действии.

npm install serve-static npm remove serve-static

Естественно, этому менеджеру нужно несколько специальных файлов, чтобы отслеживать все зависимости в вашем проекте. Вот почему приложения, использующие NPM, имеют как минимум два файла: package.json и package-lock.json. Вы можете вызвать следующую команду, чтобы быстро создать новый пакет NPM.

npm init -y

Примечание: как мы видели в первой части этой статьи, NPM не нужен для использования Node.js или Javascript. Его основное внимание уделяется управлению вашими зависимостями — ни больше, ни меньше. Через NPM вы можете загрузить код, опубликованный на npmjs.com. Все эти внешние модули хранятся в вашем проекте в специальной директории с именем node_modules. Вам практически никогда не придется изменять этот каталог, так как он полностью управляется NPM.

Package.json дает вам представление о ваших текущих зависимостях в проекте. package-lock.json — это специальный файл, в котором хранятся некоторые метаданные об изменениях, касающихся вашего package.json-файла или каталога node_modules, и его можно пока игнорировать.

Думаю, я завершу свое описание самой основной концепции NPM, что он делает и какие файлы/каталоги создает автоматически. Дополнительная информация по ссылке в конце статьи.

Arc для веб-разработки

Отлично, теперь вы знаете основы Node.js и NPM. Но с какой стати все это вообще необходимо изучать, если вы просто хотите начать создавать свой собственный современный веб-сайт?

Как мы только что видели, NPM позволяет нам загружать код из обширной коллекции библиотек (точнее, самой большой из существующих). Для веб-разработки вам понадобится сервер, который может разместить (то есть предоставить) ваше веб-приложение. Существует множество доступных сервисов, где вы можете загрузить свой веб-сайт-проект и использовать существующую инфраструктуру, включая серверы, чтобы сделать веб-сайт доступным в Интернете.

А для локальной разработки также требуется сервер, чтобы загружать ваши локальные файлы и делать их доступными только вам на вашем устройстве во время разработки. Благодаря Node.js вы можете просто сделать это: сделать свой сайт доступным локально через так называемый локальный хост. Node.js имеет встроенные инструменты, необходимые для запуска локального сервера, но с помощью NPM ваше приложение может быть обогащено проверенными в боевых условиях компонентами, которые помогут вам создавать очень большие сервисы за короткий промежуток времени.

Конечно, это только начало: NPM содержит так много кода для создания современных веб-приложений (известных как PWA, «прогрессивное веб-приложение»), а также сложных серверов. Но для первого знакомства, я думаю, это объяснение должно подойти.

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