CommonJS
CommonJS — это проект по стандартизации экосистемы модулей для JavaScript за пределами веб-браузеров (например, на веб-серверах или в собственных настольных приложениях ).
Спецификация CommonJS о том, как должны работать модули, сегодня широко используется для серверного JavaScript с Node.js. [1] Он также используется для JavaScript на стороне браузера, но этот код должен быть упакован с помощью транспилятора, поскольку браузеры не поддерживают CommonJS. [1] Другой основной используемой спецификацией модулей является спецификация модулей ECMAScript (ES) (модули ES6, также известные как модули ES2015). [2] CommonJS можно распознать по использованию require()
функция и module.exports
, а модули ES используют import
и export
утверждения для схожих (хотя и не идентичных) функций.
История
[ редактировать ]Проект был запущен инженером Mozilla Кевином Дангуром в январе 2009 года и первоначально назывался ServerJS . [3]
То, что я здесь описываю, не является технической проблемой. Это вопрос того, как люди собираются вместе и принимают решение сделать шаг вперед и начать вместе создавать что-то большее и крутое.
— Кевин Дэнгур [3]
В августе 2009 года проект был переименован в CommonJS, чтобы показать более широкую применимость API . [4] Спецификации создаются и утверждаются в открытом процессе. Спецификация считается окончательной только после того, как она была завершена несколькими реализациями. [5] CommonJS не связан с международной группой Ecma TC39, работающей над ECMAScript , но некоторые члены TC39 участвуют в проекте. [6]
Технические характеристики
[ редактировать ]В список технических характеристик входят: [7]
Текущий
[ редактировать ]- Модули/1.0 (заменены Модулями/1.1)
- Модули/1.1
- Модули/1.1.1
- Пакеты/1.0
- Система/1.0
Предложения
[ редактировать ]Предложения охватывают гораздо больше, чем просто модули. Они намерены определить набор API, которые будут полезны как для не-веб-реализаций JavaScript, так и со стандартизированными именами пакетов для обеспечения совместимости внутри экосистемы. Эта цель иногда пересекается с целью TC39, и такие части, как Promises, действительно вошли в сам ECMAScript.
Часть после косой черты — это версия. Если предложение является спорным, каждому отдельному предложению (включая последовательные изменения одного и того же автора) присваивается новая буква. Когда основное направление известно, ему начинают присваиваться числовые версии.
- Двоичный/B,F
- Консоль (перенесена из Интернета)
- Кодировки/A,C
- Кодировки/А
- HTTP-клиент/Б
- Я
- Файловая система/А,А/0
- Модули/Асинхронный/А
- Модули/Асинхронноеопределение
- Модули/LoaderPlugin
- Модули/Ресурсы
- Модули/ПростойАсинхронный
- Модули/Транспорт/B,C,D,E
- Модули/Оболочки
- Модули/Обертки-Явные зависимости
- Пакеты/1.1
- Пакеты/АсинхронноеОпределение
- Пакеты/Сопоставления/A,B,C,D
- Обещания/Б,Д
- Модульное тестирование/Б,1.0,1.0.1
Реализации
[ редактировать ]- Общий узел [8]
- CommonJS Compiler — инструмент командной строки, который делает модули Common JS пригодными для использования в браузере. [9]
- CommonJS для PHP — облегченная реализация CommonJS для PHP 5.3+. [10]
- CouchDB [11]
- Флюспферд [12]
- GPSEE [13]
- Реактивный ранец
- Джойент Смарт Платформа [14]
- JSBuild [15]
- МонгоБД [16]
- Нарвал (платформа JavaScript) [17]
- Node.js (частичный; синхронный) [18]
- Упорствовать [19]
- PINF JavaScript-загрузчик [20]
- PythonMonkey реализует среду CommonJS Modules/1.1.1, которая может загружать модули, написанные на JavaScript или Python (или на обоих). [21]
- КольцоJS [22]
- ШелкJS [23]
- SproutCore [24]
- ЧайJS [25]
- Ваканда [26]
- XULJet [27]
- куни
См. также
[ редактировать ]- Определение асинхронного модуля (AMD), еще одна архитектура модуля JavaScript.
- Сравнение серверных решений JavaScript
- Объектная модель документа (DOM), приложений (API) веб-браузера клиентских интерфейс программирования , обычно доступный в JavaScript.
- JSGI
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Эрик Эллиотт (26 июня 2014 г.). Программирование приложений JavaScript: надежная веб-архитектура с использованием Node, HTML5 и современных библиотек JS . «О'Рейли Медиа, Инк.». стр. 87–. ISBN 978-1-4919-5027-2 .
- ^ Марио Кашаро; Лучано Маммино (29 июля 2020 г.). Шаблоны проектирования Node.js: проектируйте и внедряйте приложения Node.js промышленного уровня с использованием проверенных шаблонов и методов, 3-е издание . Пакт Паблишинг. п. 62. ИСБН 978-1-83921-044-0 .
- ^ Перейти обратно: а б «Что нужно серверному JavaScript ·» . www.blueskyonmars.com . Проверено 5 августа 2021 г.
- ^ «CommonJS: Стандартная библиотека JavaScript» . www.commonjs.org . Архивировано из оригинала 13 ноября 2017 г. Проверено 5 августа 2021 г.
- ^ «ProposalProcess — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «CommonJS: первый год ·» . www.blueskyonmars.com . Проверено 5 августа 2021 г.
- ^ «Стандартная библиотека JavaScript» . CommonJS. Архивировано из оригинала 28 мая 2014 г. Проверено 28 мая 2014 г.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ "olegp/common-node @ GitHub" . olegp.github.io . Проверено 5 августа 2021 г.
- ^ «Компилятор CommonJS — делает ваши модули Common JS пригодными для использования в браузере» . dsheiko.github.io . Проверено 5 августа 2021 г.
- ^ «GitHub — DrBenton/CommonJSForPHP: простая реализация спецификации CommonJS для PHP 5.3+» . Гитхаб . Проверено 5 августа 2021 г.
- ^ «Реализации/CouchDB — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Flusspferd — платформа CommonJS | Привязки Javascript для C» . Архивировано из оригинала 28 января 2013 г. Проверено 19 сентября 2017 г.
- ^ «Реализации/GPSEE — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Реализации/Умные — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Домашняя страница — JSBuild» . Архивировано из оригинала 4 января 2011 года.
- ^ «Самая популярная база данных для современных приложений» . МонгоБД . Проверено 5 августа 2021 г.
- ^ «Реализации/Нарвал — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Реализации/node.js — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Реализации/Настойчивость — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «GitHub — pinf/loader-js: РАННЯЯ ОСТАНОВКА ИССЛЕДОВАНИЙ» . Гитхаб . 30 июля 2021 г. Проверено 5 августа 2021 г.
- ^ «Distributive-Network/PythonMonkey: движок JavaScript Mozilla SpiderMonkey, встроенный в виртуальную машину Python, использующий движок Python для обеспечения среды хоста JS» . Гитхаб . 07.07.2023 . Проверено 10 июля 2023 г.
- ^ «Реализации/RingoJS — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «WWW-сайт SilkJS» . Архивировано из оригинала 12 сентября 2017 г. Проверено 19 октября 2012 г.
- ^ «Реализации/SproutCore — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ «Реализации/TeaJS — CommonJS Spec Wiki» . wiki.commonjs.org . Проверено 5 августа 2021 г.
- ^ САС, Ваканда. «Wakanda FullStack JavaScript-платформа» . Платформа Wakanda FullStack JavaScript . Проверено 5 августа 2021 г.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . code.google.com . Проверено 5 августа 2021 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- «Усилия CommonJS выводят JavaScript на путь мирового господства» . Арс Техника . декабрь 2009 года.