CommonJS fue un proyecto con el objetivo de establecer convenciones sobre el ecosistema de módulos para JavaScript fuera del navegador web. La razón principal de su creación fue la gran falta de unidades modulares de scripts de JavaScript de forma comúnmente aceptada, que pudieran ser reutilizadas en entornos diferentes a los proporcionados por un navegador web convencional, por ejemplo, un servidor web o aplicaciones de escritorio nativas que ejecuten scripts de JavaScript.
CommonJS mantiene especificaciones (incluyendo borradores) y una lista de implementaciones en un sitio MediaWiki. Todas las actividades de edición han cesado desde noviembre de 2014, marcando el final efectivo de su vida.[1]
Historia
El proyecto fue iniciado por el ingeniero de Mozilla Kevin Dangoor en enero de 2009 y se llamó inicialmente ServerJS.[2]
Lo que estoy describiendo aquí no es un problema técnico. Se trata de que la gente se reúna y tome la decisión de dar un paso adelante y empezar a construir algo más grande y más genial juntos.
Kevin Dangoor
En agosto de 2009, el proyecto pasó a denominarse CommonJS para mostrar la mayor aplicabilidad de las API's.[3] Las especificaciones se crean y aprueban en un proceso abierto. Una especificación sólo se considera definitiva cuando ha sido terminada por múltiples[4] implementaciones. CommonJS no está afiliado al grupo Ecma International TC39 que trabaja en ECMAScript, pero algunos miembros del TC39 participan en el proyecto.[5]
En mayo de 2013, Isaac Z. Schlueter, el autor de npm, el administrador de paquetes para Node.js, dijo que CommonJS se está volviendo obsoleto por el ahora dominante Node.js, y es evitado por los desarrolladores del núcleo de Node.js.[6]
Especificaciones
La lista de especificaciones incluye:[7]
- Modules/1.0 (Superseded by Modules/1.1)
- Modules/1.1
- Modules/1.1.1
- Packages/1.0
- System/1.0
Propuestas
Las propuestas abarcan mucho más que módulos. Pretenden definir un conjunto de APIs que sean útiles tanto para implementaciones de JavaScript no web, con nombres de paquetes estandarizados para proporcionar interoperabilidad dentro del ecosistema. Este objetivo a veces se superpone con el del TC39, y partes como Promesas se han convertido en el propio ECMAScript.
La parte después de la barra es la versión. Cuando una propuesta está en disputa, a cada propuesta individual (incluyendo revisiones secuenciales del mismo autor) se le asigna una nueva letra. Cuando se conoce la dirección principal se le empiezan a asignar versiones numéricas.
- Binary/B,F
- Console (ported from Web)
- Encodings/A,C
- Encodings/A
- HTTP Client/B
- IO/A
- Filesystem/A,A/0
- Modules/Async/A
- Modules/AsynchronousDefinition
- Modules/LoaderPlugin
- Modules/Resources
- Modules/SimpleAsynchronous
- Modules/Transport/B,C,D,E
- Modules/Wrappings
- Modules/Wrappings-Explicit-Dependencies
- Packages/1.1
- Packages/AsynchronousDefinition
- Packages/Mappings/A,B,C,D
- Promises/B,D
- Unit Testing/B,1.0,1.0.1
Implementaciones
Véase también
Referencias
Enlaces externos