Я Node noob. В чем разница между "пакетом" и "модулем" в Node.js?
Разница между модулем и пакетом в Node?
Ответ 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.
Ответ 5
Я искал node.js doc, нашел свой def для модуля:
В модульной системе Node.js каждый файл рассматривается как отдельный модуль.
npm имеет некоторую официальную репутацию здесь.
Краткое резюме
Пакет - это файл или каталог, который описывается package.json. Это может произойти в кучу разных способов! Для получения дополнительной информации см. "Что такое пакет?" Ниже.
Модуль - это любой файл или каталог, который может быть загружен Node.js 'require(). Опять же, есть несколько конфигураций, которые позволяют это произойти. Для получения дополнительной информации см. "Что такое модуль?" Ниже.