Подтвердить что ты не робот

Разница между модулем и пакетом в Node?

Я Node noob. В чем разница между "пакетом" и "модулем" в Node.js?

4b9b3361

Ответ 1

Модули - это библиотеки для node.js. См. Приведенный ниже отрывок из api:

Узел имеет простую систему загрузки модулей. В узле файлы и модули соответствуют друг другу.

Примеры модулей:

  • circle.js
  • Rectangle.js
  • Square.js

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

Пример пакета:

Shapes             <- Package name
  - Circle.js      <- 
  - Rectangle.js   <- Modules that belong to the Shapes package
  - Square.js      <-

По сути, вы можете установить пакет, Shapes и получить доступ к модулям Circle, Rectangle и Square.

Ответ 2

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

Короче говоря, все modules являются packages, но не все packages предназначены для использования как modules, хотя многие могут быть.

Модули будут установлены, если они указаны как dependencies в файле package.json, и помещены в папку node_modules, но npm рекурсирует через свои файлы package.json, чтобы добавить modules, чтобы они полагались на.

Ответ 3

Модуль представляет собой один файл JavaScript, который имеет некоторые разумные функциональные возможности.

Пакет - это каталог с одним или несколькими модулями внутри него и файл package.json, у которого есть метаданные о пакете.

Пакет может быть очень простым, например, подчеркивание имеет только один файл Javascript (мы видим две версии его обычной и мини-версии и package.json)

[email protected] MINGW64 ~/Desktop/module-package-demo/node_modules/underscore
$ dir
LICENSE       README.md      underscore-min.js
package.json  underscore.js  underscore-min.js.map

В то время как более сложный пакет, такой как Express, имеет один файл Javascript в корне, но внутри его подкаталогов есть еще несколько файлов Javascript и многое другое в подкаталогах этого

[email protected] MINGW64 ~/Desktop/module-package-demo/node_modules/express
$ dir
History.md  index.js  lib  LICENSE  package.json  Readme.md

Теперь очень часто люди обращаются к пакету как к модулю.

Ответ 4

Все, что вы можете require() - это модуль. В большинстве случаев в мире CommonJS один файл является модулем.

Пакет может содержать несколько модулей, но вы обычно загружаете точку входа (main), которая указана в package.json или index.js, если не указано свойство main, например: require('express')

Но вы также можете потребовать другой файл (не основной файл), если вы знаете его местоположение, например: require("express/lib/application") (в node.js вы можете опустить расширение: .js)

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

На самом деле, npm устанавливает все пакеты в node_modules, что запутывает, потому что это должно быть node_packages.

https://nodejs.org/api/modules.html

Ответ 5

Я искал node.js doc, нашел свой def для модуля:

В модульной системе Node.js каждый файл рассматривается как отдельный модуль.

npm имеет некоторую официальную репутацию здесь.

Краткое резюме
Пакет - это файл или каталог, который описывается package.json. Это может произойти в кучу разных способов! Для получения дополнительной информации см. "Что такое пакет?" Ниже.
Модуль - это любой файл или каталог, который может быть загружен Node.js 'require(). Опять же, есть несколько конфигураций, которые позволяют это произойти. Для получения дополнительной информации см. "Что такое модуль?" Ниже.