CommonJS был проектом с целью установить соглашения в экосистеме модуля для JavaScript вне веб-браузера. Основной причиной его создания было серьезное отсутствие общепринятых форм модулей модуля JavaScript, которые можно было бы повторно использовать в средах, отличных от тех, которые предоставляются обычными веб-браузерами, выполняющими сценарии JavaScript (например, веб-серверы или собственные настольные приложения ).
Спецификация модуля CommonJS широко используется сегодня, в частности, для серверного программирования JavaScript с Node.js. Он также используется при разработке JavaScript на стороне браузера, но код должен быть упакован с транспилером , поскольку браузеры не поддерживают CommonJS. Другой основной используемой спецификацией серверных модулей является спецификация модулей ES (модули ES6). CommonJS можно распознать с помощью функции require ()
и module.exports
, в то время как модули ES используют операторы import
и export
. за аналогичный (хотя и не идентичный) функционал.
Проект был начат инженером Mozilla Кевином Дангуром в январе 2009 года и первоначально назывался ServerJS .
То, что я здесь описываю, не является технической проблемой. Это вопрос того, чтобы люди собрались вместе и приняли решение сделать шаг вперед и вместе начать создавать что-то большее и крутое.
— Кевин ДангурВ августе 2009 года проект был переименован в CommonJS, чтобы продемонстрировать более широкую применимость API. Спецификации создаются и утверждаются в открытом процессе. Спецификация считается окончательной только после того, как она была завершена несколькими реализациями. CommonJS не входит в группу Ecma International TC39, работающую над ECMAScript, но некоторые члены TC39 участвуют в проекте.
Список спецификаций включает:
Предложения охватывают гораздо больше, чем модули. Они намерены определить набор API-интерфейсов, которые полезны как для реализаций JavaScript вне Интернета, так и со стандартизованными именами пакетов для обеспечения взаимодействия в экосистеме. Эта цель иногда пересекается с целью TC39, и такие части, как Promises, действительно вошли в сам ECMAScript.
Часть после косой черты - это версия. Когда предложение является спорным, каждому отдельному предложению (включая последовательные исправления от одного и того же автора) присваивается новая буква. Когда основное направление известно, ему начинают присваиваться числовые версии.