!!! Модули и пакеты Node.JS

//

 API Node.js //nodejsdev.ru/api/

Стандартные модули

Модули, входящие в Node.js по умолчанию называются "стандартными" (core) модулями. Эти модули включены в установку Node.js и доступны для использования без дополнительной установки. Стандартные модули обновляются вместе с Node.js при установке новых версий Node.js. Как правило, вам не нужно обновлять стандартные модули отдельно от самой среды выполнения Node.js. Когда вы устанавливаете новую версию Node.js, стандартные модули также обновляются до соответствующей версии этой среды выполнения.

API стандартных пакетов в  Node.js v**.*.* documentation //nodejs.org/api/

Надежность

Все модули делятся по надежности на четыре вида:

  •  Stability: 0  получают устаревшие модули, для которых обратная совместимость не гарантируется и может выводиться предупреждение
  •  Stability: 1  "Использование не рекомендуется" получают экспериментальные модули, на которые не распространяются правила семантического управления версиями, и они могут быть изменены или удалены без обратной совместимости могут произойти в любой будущей версии
  •  Stability: 2  "Стабильный" получают пакеты с актуальной совместимостью и высоким приоритетном
  •  Stability: 3  "Наследие" получают давно используемые пакеты без активной поддержки, на которые распространяются гарантии семантического управления версиями, и которым существуют альтернативы

!!! /fs /timers /streams /path /util /zlib /crypto

Debugger

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

/dns

/net

Модуль node:net предоставляет асинхронный сетевой API для создания потоковых серверов TCP или IPC (net.createServer()) и клиентов (net.createConnection()).

/http

Пакет HTTP является стандартным модулем Node.js для создания HTTP-серверов и клиентов.

/os /v8 /async_hooks /perf_hooks /trace_events

Пакеты

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

Реестр пакетов доступен для просмотра на сайте //www.npmjs.com и позволяет искать пакеты, просматривать метаданные и описания, зависимости, версии и прочее.

Имена

Идентификация пакетов осуществляется по уникальному имени. Имена пакетов делятся на два вида пространств определения:

  • Незаданное пространство имен (unscoped) позволяет пакету использовать обычное строковое имя.
  • Заданное пространство имен (scoped) требует чтобы имя пакета состояло из двух частей: имени пространства и имени пакета в заданном пространстве:
    • @username/package-name
    • @org-name/package-name
Доступность

По доступности все пакеты делятся на два вида:

  • Публичные (public) пакеты доступны для свободного использования без авторизации
  • Приватные (private) пакеты ограничены в доступе заданной группой авторизованных пользователей
    • в настоящее время получать доступ к приватным пакетам могут только пользователи с оплаченной учетной записью
Стадия

По стадии все пакеты делятся на пять видов:

  • dev (development) - версия в процессе разработки и тестирования
  • alpha - наименее стабильная версия, содержащая экспериментальный код и функции
  • beta - версия, которая уже прошла некоторые тесты и может содержать новые функции, но еще не является окончательной и может содержать ошибки
  • rc (release candidate) - кандидат в релиз, который считается стабильным, но требует дополнительного тестирования перед выпуском окончательной версии
  • stable или просто отсутствие маркировки - это окончательная и стабильная версия, которая подходит для использования в продакшн-окружении

DB

Взаимодействие с СУБД имеет много решений, которые имеют качественные отличия:

  • *
  • ORM (Object-Relational Mapping) реализует объектно-реляционное отображение DB в концептуальную/виртуальную объектную базу данных
  • ODM (Object Document Mapper) используется преимущественно для доступа к документоориенриирвоанным базам данных, к которым относятся MongoDB, CouchDB, ArangoDB, OrientDB (последние две базы данных гибридные) и некоторые другие.

MySQL

Поддержка MySQL реализована в нескольких пакетах.

  • Пакет mysql от mysqljs был очень популярным, сформировал традиционный API, но прекратил развитие 2020 году.
  • Пакет mysql2 является продуктом слияния разработчиков проекта MySQL-Native с командой  mysqljs, который был полностью переписан и адаптирован к традиционному API mysql.  Новый пакет поддерживает большинство функций популярно API и расширяет его новыми методами, при этом существенно улучшена скорость.
  • Официальный драйвер от Oracle поддерживает MySQL 8  и реализует интерфейс прикладного программирования X DevAPI для работы с хранилищем документов MySQL посредством операций NoSQL на основе CRUD.

Пакет mysql2

https://sidorares.github.io/node-mysql2/docs/documentation

 

  • .createConnection(|)
    • /
    • флаги
      • MULTI_RESULTS - Can handle multiple resultsets for queries. (Default on)
      • MULTI_STATEMENTS - The client may send multiple statement per query or statement prepare (separated by ;). This flag is controlled by the connection option multipleStatements. (Default off)
    • 'mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
  • Объект Connection
    • connection.query('UPDATE users SET foo = ?, bar = ?, baz = ? WHERE id = ?', ['a', 'b', 'c', userId], function (error, results, fields)

Пакет PDFKit

https://www.npmjs.com/package/pdfkit

Пакет sqlite3

https://www.npmjs.com/package/sqlite3

Пакет HTTP-Server

 

Express

OpenJS: Express project //expressjs.com
Эта библиотека предоставляет разработчику предельно простой, но мощный инструмент для создания веб-серверов.

  • express() - функция верхнего уровня, экспортируемая модулем express, создает объект экспресс-приложения
  • Методы
    • express.json([options])
    • express.raw([options])
    • express.Router([options])
    • express.static(root, [options])
    • express.text([options])
    • express.urlencoded([options])
  • Объект приложения app
    • app.get(name) - возвращает значение параметра приложения по имени
    • app.get(path, callback [, callback ...]) для GET запросов по определенному фильтру устанавливает обработчик
      • path - строковый path-фрагмент URL запроса
        • точный образец path
        • шаблон path
        • шаблон регулярного выражения
        • массив образцов и шаблонов
      • callback [, callback ...] - функция, серия функций или массив функций, которые будут вызваны по запросу удовлетворяющему фильтру
        • callback-функция должна соответствовать декларации function (req, res, next) {}
          • req - объект Request
          • res - объект Response
  • Объект Request представляет HTTP-запрос и имеет свойства для строки запроса, параметров, тела, HTTP-заголовков (по соглашению в документации объект всегда называется req)
    • Свойства
      • req.app содержит ссылку на объект приложения Express, использующего промежуточное программное обеспечение
      • req.body Содержит пары ключ-значение данных, представленных в теле запроса
        • по умолчанию не определен и заполняется при использовании промежуточного программного обеспечения для анализа тела, такого как express.json() или express.urlencoded()
      • req.cookies представляет объект, содержащий файлы cookie, отправленные по запросу или {}, если запрос не содержит cookie
    • Методы
      • req.get(field) Возвращает указанное поле заголовка HTTP-запроса (соответствие без учета регистра). Поля «Referrer» и «Referer» взаимозаменяемы.
  • Объект Response

!!! https://expressjs.com/en/starter/hello-world.html

body-parser

qrcode

 //www.npmjs.com/package/qrcode#api
//

API
Browser:

create()
toCanvas()
toDataURL()
toString()
Server:

create()
toCanvas()
toDataURL()
toString()
toFile()
toFileStream()

//

//

Джерела

Leave a Reply