Как подключить node js к проекту
Перейти к содержимому

Как подключить node js к проекту

  • автор:

Как подключить node js к проекту

Кроме встроенных и кастомных модулей Node.js существует огромный пласт различных библиотек и фреймворков, разнообразных утилит, которые создаются сторонними производителями и которые также можно использовать в проекте, например, express, grunt, gulp и так далее. И они тоже нам доступны в рамках Node.js. Чтобы удобнее было работать со всеми сторонними решениями, они распространяются в виде пакетов. Пакет по сути представляет набор функциональностей.

Для автоматизации установки и обновления пакетов, как правило, применяется система управления пакетами или менеджеры. Непосредственно в Node.js для этой цели используется пакетный менеджер NPM (Node Package Manager). NPM по умолчанию устанавливается вместе с Node.js, поэтому ничего доустанавливать не требуется. Но можно обновить установленную версию до самой последней. Для этого в командной строке/терминале надо запустить следующую команду:

npm install npm@latest -g

Чтобы узнать текущую версию npm, в командной строке/терминале надо ввести следующую команду:

npm -v

Для нас менеджер npm важен в том плане, что с его помощью легко управлять пакетами.

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

Для установки пакета через npm применяется команда npm install , после которой указываются пакеты

npm install имя_пакета1 имя_пакета2 имя_пакетаN

В качестве демонстрации будем устанавливать пакет lodash . Lodash представляет собой библиотеку, которая позволяет манипулировать данными, в частности, массивами. Кому интересно, может подробнее узнать на официальном сайте библиотеки — https://lodash.com/.

Допустим, для проекта где-нибудь в файловой системе определим каталог app и перейдем в терминале/командной строке к папке проекта с помощью команды cd . Затем для установки Lodash в проект введем команду

npm install lodash

После установки express в папке проекта app появится подпапка node_modules , в которой будут хранится все установленные внешние модули. В частности, в подкаталоге node_modules/lodash будут располагаться файлы библиотеки Lodash.

NPM в Node.js

Кроме того, при установке пакета в папку проекта добавляется файл package.json . После добавления lodash в нашем случае он будет иметь примерно следующий вид:

Файл package.json представляет собой объект-конфигурацию в формате json, где каждое свойство представляет отдельную секцию. Так, здесь определена секция «dependencies», которая хранит установленные пакеты. И здесь мы видим, что у нас установлен пакет «lodash», а версия пакета — «^4.17.21».

Также в проекте создан еще один файл — package-lock.json . Этот файл автоматически генерируется при любых операциях, в которых npm изменяет файл package.json и структуру каталогов/файлов в каталоге node_modules . Данный файл упрощает для npm управление пакетами.

После установке библиотеки lodash мы можем ее использовать. Так, определим в папке проекта файл app.js со следующим кодом:

const lodash = require("lodash") const people = ["Tom", "Sam", "Bob"]; const employees = ["Tom", "Alice", "Sam"]; // объединение массивов - в результате только уникальные значения const result1 = lodash.union(people, employees); console.log(result1); // [ "Tom", "Sam", "Bob", "Alice" ] // пересечение массивов - в результате только общие значения const result2 = lodash.intersection(people, employees); console.log(result2); // [ "Tom", "Sam" ]

Поскольку мы установили библиотеку lodash через npm, то мы можем получить соответствующий модуль через выражение require :

const lodash = require("lodash")

Затем мы можем обращаться к функциям этого модуля. Для демонстрации здесь применяется функция uninon , которая объединяет два массива (множества) и возвращает новое множество только с уникальными значениями. А функция intersection() также применяется к массивам, но возвращает множество, которое содержит только общие для всех массивов элементы.

В консоли запустим файл app.js командой node app.js :

c:\app> node app.js [ "Tom", "Sam", "Bob", "Alice" ] [ "Tom", "Sam" ] c:\app>

Если через какое-то время нам больше не нужен пакет, его можно удалить командой npm uninstall , которой передаются удаляемые пакеты

npm uninstall пакет1 пакет2 пакетN

Например, удалим ранее установленный lodash:

npm uninstall lodash

Если после удаления мы откроем папку node_modules , то увидим, что она пустая. И также изменится файл package.json — он будет содержать пустой объект:

Получение информации о пакете

С помощью команды npm info [пакет] можно получить информацию об определенном пакете. Например, получим информацию о пакете lodash:

c:\app> npm info lodash lodash@4.17.21 | MIT | deps: none | versions: 114 Lodash modular utilities. https://lodash.com/ keywords: modules, stdlib, util dist .tarball: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz .shasum: 679591c564c3bffaae8454cf0b3df370c3d6911c .integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== .unpackedSize: 1.4 MB maintainers: - mathias - jdalton - bnjmnt4n dist-tags: latest: 4.17.21 published over a year ago by bnjmnt4n c:\app>

Здесь мы видим большой массив данных типа версии, лицензии, кто поддерживает, кто и когда опубликовал, размер пакета, домашнюю страницу.

Установка

Предположим, вы уже установили Node.js. Создайте каталог для своего приложения и сделайте его своим рабочим каталогом.

$ mkdir myapp $ cd myapp 

С помощью команды npm init создайте файл package.json для своего приложения. Дополнительную информацию о работе package.json можно найти в разделе Специфика работы с npm package.json.

$ npm init 

Эта команда выдает целый ряд приглашений, например, приглашение указать имя и версию вашего приложения. На данный момент, достаточно просто нажать клавишу ВВОД, чтобы принять предлагаемые значения по умолчанию для большинства пунктов, кроме следующего:

entry point: (index.js) 

Введите app.js или любое другое имя главного файла по своему желанию. Если вас устраивает index.js , нажмите клавишу ВВОД, чтобы принять предложенное имя файла по умолчанию.

Теперь установите Express в каталоге myapp и сохраните его в списке зависимостей. Например:

$ npm install express --save 

Для временной установки Express, без добавления его в список зависимостей, не указывайте опцию —save :

$ npm install express 

Модули Node, установленные с опцией —save , добавляются в список dependencies в файле package.json . В дальнейшем, при запуске npm install в каталоге app установка модулей из списка зависимостей будет выполняться автоматически.

Работа с модулями в Node.js

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

Предварительныетребования

Знание основ JavaScript.

Классы и наследование в ES6 [1].

Установить Node.js и npm

Подключение модулей

Для подключения как собственных, так и сторонних модулей в Node.js используется функция require() , которой нужно передать путь к файлу.

В зависимости от параметра, переданного в функцию require() , отличается алгоритм подключения модуля. Полную информация по поводу подключения модулей можно найти в документации.

Рассмотрим базовые варианты подключения модулей:

  • Встроенные в Node.js модули подключаются по имени (например const http = require(‘http’) ) и имеют приоритет над всеми остальными. Так если будет сторонний модуль с таким названием или файл с таким именем require(‘http’) всегда вернет встроенный модуль.
  • Сторонние модули, подключенные через NPM находятся в папке проекта node_modules . Если идентификатор модуля, переданный require() , не является основным модулем и не начинается с ‘/’, ‘../’ или ‘./’, то Node.js начинает искать в родительском каталоге текущего модуля папку node_modules , и пытается загрузить модуль из этого места. Если он там не найден, он перемещается в родительский каталог и так далее, пока не будет достигнут корень файловой системы. Чтобы подключить модуль который находится в node_modules достаточно указать его название ( const express = require(‘express’) ). NPM также даем возможность установить модуль глобально npm install -g MODULE , тогда он будет доступен из любого места.
  • Рассмотрим еще один вариант подключения, если переданный параметр в функцию require начинается с /, ../, или ./, тогда файл для подключения будет происходить по абсолютному пути или относительно текущей папки. При этом тип файла указывать не надо, так как Node.js попытается сначало подключить файл с именем точно соответствующим указанному, а потом добавляя к имени разные расширения: .js, .json, а также .node. Пример подключения: const user = require(‘./user.js’) . Если в пути указан путь только к папке, то по умолчанию в этой папке будет искаться файл index.js. Чтобы изменить настройку по умолчанию необходимо в файле package.json изменить свойство «main».

Чтобы получить полный путь, по которому был найден модуль, можно воспользоваться функцией require.resolve() .

var modulePath = require.resolve(‘express’) — запишет в переменную modulePath путь к модулю ‘express’.

Объединяя все вышесказанное, вот алгоритм высокого уровня в псевдокоде того, что require.resolve() делает:

  1. If X is a core module, a. return the core module b. STOP
  2. If X begins with ‘/’ a. set Y to be the filesystem root
  3. If X begins with ‘./’ or ‘/’ or ‘../’ a. LOAD_AS_FILE(Y + X) b. LOAD_AS_DIRECTORY(Y + X)
  4. LOAD_NODE_MODULES(X, dirname(Y))
  5. THROW «not found»
  1. If X is a file, load X as JavaScript text. STOP
  2. If X.js is a file, load X.js as JavaScript text. STOP
  3. If X.json is a file, parse X.json to a JavaScript Object. STOP
  4. If X.node is a file, load X.node as binary addon. STOP
  1. If X/index.js is a file, load X/index.js as JavaScript text. STOP
  2. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
  3. If X/index.node is a file, load X/index.node as binary addon. STOP
  1. If X/package.json is a file, a. Parse X/package.json, and look for «main» field. b. let M = X + (json main field) c. LOAD_AS_FILE(M) d. LOAD_INDEX(M)
  2. LOAD_INDEX(X)
  1. let DIRS=NODE_MODULES_PATHS(START)
  2. for each DIR in DIRS: a. LOAD_AS_FILE(DIR/X) b. LOAD_AS_DIRECTORY(DIR/X)
  1. let PARTS = path split(START)
  2. let I = count of PARTS — 1
  3. let DIRS = []
  4. while I >= 0, a. if PARTS[I] = «node_modules» CONTINUE b. DIR = path join(PARTS[0 .. I] + «node_modules») c. DIRS = DIRS + DIR d. let I = I — 1
  5. return DIRS

Экспортирование модулей

Теперь разберемся с экспортированием собственных модулей. В Node.js есть несколько путей для экспортирования данных.

В каждом модуле доступен объект module . Основная задача этого объекта дать возможность модулю вернуть результат своего исполнения. Это может быть и объект, и функция, и строка — любой тип данных.

У объекта module есть свойство exports , в которое можно добавить все, что необходимо вернуть из модуля. Именно module.exports вернется как результат подключения модуля. Также вместо module.exports можно использовать переменнуюexports.

Следующие строки будут эквивалентны:

Если вы хотите чтобы модуль возвращал не объект, с методами и свойствами, а только определенные данные (класс, функцию), то необходимо присвоитьmodule.exportsэти данные.

Например, мы описали класс User .

При передаче module.exports.User = User в результате импорта const User = required(‘./user’) переменная User будет содержать свойство User.User , которое и отвечает за этот класс.

Но если мы переприсвоем module.exports следующим образом module.exports = User , то переменная User при импорте будет являться классом. То есть мы сможем создавать экземпляры класса с помощью new User() , а не как в предыдущем случае с помощью new User.User() .

При этом мы не можем присвоить класс User в переменную exports , т.е записать exports = User , потому что переменная exports является ссылкой на module.exports , а после переприсвоения перестанет на него ссылаться.

Практическое задание

Используя ES6 cоздать класс Person в файле person.js, конструктор которого принимает имя и возраст в качестве аргумента. Все экземпляры этого класса должны иметь общий метод show , который выводит информацию о пользователя.

В файл index.js создать экземпрляр класса Person и вывести на консоль информацию о пользователе.

Глоссарий

Термин Значение
Экспорт Предоставление программным модулем некоторой части описанных в нём типов, констант, переменных, классов, процедур или функций в пользование другим модулям, входящим в состав той же программы.
Импорт Добавление данных, вставка данных из внешних источников в текущий файл/документ/базу данных.
Подключение модуля Импорт модуля в файл

Ссылки

  1. ES6 Classes[Электронный ресурс]. – https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes

Настройка среды разработки Node.js. Быстрый способ создание проекта с помощью фреймворка Express

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

Установка Node.js

  • OS X — Самый простой способ установить Node.js на OS X — использовать официальный установщик с сайта nodejs.org . Вы также можете использовать Homebrew, если хотите. Для управления и переключения между версиями Node.js на вашем компьютере мы рекомендуем использовать nvm .
  • Windows — Самый простой способ установить Node.js в Windows — это официальный установщик с сайта nodejs.org . Вы также можете использовать Chocolatey, если хотите. Для управления и переключения между версиями Node.js на вашем компьютере мы рекомендуем использовать nvm-windows
  • Linux — Способ установки Node.js зависит от дистрибутива. Для управления и переключения между версиями Node.js на вашем компьютере мы рекомендуем использовать nvm.

Установите текстовый редактор или IDE

Прежде чем мы сможем начать проект Node.js, нам понадобится место для написания нашего кода.

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

  • Visual Studio Code в настоящее время является самой популярной интегрированной средой разработки (IDE), используемой для проектов JavaScript. Это быстрый бесплатный редактор и отладчик, который работает на всех платформах и поставляется со многими уже установленными полезными инструментами.
  • WebStorm — еще одна чрезвычайно мощная IDE, построенная на платформе IntelliJ с открытым исходным кодом. Попробовать можно бесплатно, но через 30 дней требуется платная лицензия.
  • Инструменты Node.js для Visual Studio — отличный вариант, если вы уже являетесь пользователем Visual Studio .
  • Vim — многолетний любимый текстовый редактор среди опытных пользователей.

Если вы новичок в программировании, мы настоятельно рекомендуем начать с Visual Studio Code.

Запуск нового проекта с помощью npm init

Перед запуском любого нового проекта Node.js мы должны запустить npm init , чтобы создать новый package.json файл для нашего проекта.

Создайте новый пустой каталог в среде разработки и запустите npm init . Затем вы ответите на несколько основных вопросов о вашем проекте, и npm создаст package.json для вас новый файл, когда вы закончите.

«This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.»
«See `npm help init` for definitive documentation on these fields
and exactly what they do.»
«Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.»
«Press ^C at any time to quit.
package name: (my-project)
version: (1.0.0)
description: A sample Twilio project
entry point: (index.js)
test command:
git repository:
author: Jane Doe
license: (ISC)
About to write to /Users/<your-username>/my-project/package.json:»
«name» : «my-project» ,
«version» : «1.0.0» ,
«description» : «A sample Twilio project» ,
«main» : «index.js» ,
«test» : «echo \»Error: no test specified\» && exit 1″
«author» : «Jane Doe» ,
«license» : «ISC»
«Is this OK? (yes) yes»

Теперь мы готовы установить наши зависимости Node.js.

Также вы можете быстро инициализировать свой проект и пропустить приведенные выше подсказки, запустив npm init -y

Установка Express.js

Мы почти готовы написать веб-приложение Express, но сначала нам нужно установить пакет Express с помощью npm .

# Используйте npm для установки пакетов
$ npm install express
# Перечислите установленные зависимости и их версии
my — project @ 1.0.0 / Users / my — project
├── express @ 4.17.1
└── twilio @ 3.67.2

Node.js использует npm для управления зависимостями, поэтому команда для установки Express в нашу среду разработки — npm install express .

Установка этого пакета указывает npm добавить пакет Express к dependencies объекту в package.json файле нашего проекта. Когда мы захотим снова установить этот же пакет в будущем, например, на рабочем сервере, мы можем просто запустить npm install .

Создание простого приложения в Express.js

Мы можем проверить, правильно ли мы настроили нашу среду разработки, создав простое приложение Express. Мы возьмем десятистрочный пример из документации Express и поместим его в новый файл с именем index.js .

JavaScript
const express = require ( ‘express’ ) ;
const app = express ( ) ;
const port = 3000 ;
app . get ( ‘/’ , ( req , res ) = > < res . send ( 'Hello World!' ) ; app . listen ( port , ( ) = > < console . log ( ` Example app listening at http : //localhost:$`);

Затем мы можем попробовать запустить наше новое приложение Express с помощью команды node index.js . Если вы откроете http://localhost:3000 в своем браузере, вы должны увидеть «Hello World!» отклик.

Установка ngrok для локальной разработки

Как только вы увидите сообщение «Hello World!» в своем образце приложения Express. сообщение, ваша среда разработки готова к работе. Однако для большинства проектов вам потребуется установить еще один полезный инструмент: ngrok.

Большинство служб используют веб-перехватчики для связи с вашим приложением. Например, когда Twilio получает входящий телефонный звонок, он обращается к URL-адресу в вашем приложении для получения инструкций о том, как обработать вызов.

Когда вы работаете над своим приложением Express в своей среде разработки, ваше приложение доступно только другим программам на том же компьютере.

Ngrok — наш любимый инструмент для решения этой проблемы. После запуска он предоставляет уникальный URL-адрес в домене ngrok.io, который будет перенаправлять входящие запросы в вашу локальную среду разработки.

Для начала перейдите на страницу загрузки ngrok и скачайте бинарный файл для вашей операционной системы: https://ngrok.com/download

После загрузки убедитесь, что ваше приложение Express запущено, а затем запустите ngrok с помощью команды ./ngrok http 3000 . Вы должны увидеть вывод, похожий на этот:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *