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 editar

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 editar

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 editar

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 editar

Véase también editar

Referencias editar

  1. «Recent changes». CommonJS Spec Wiki. 
  2. What Server Side JavaScript needs - Blue Sky On Mars
  3. «CommonJS: JavaScript Standard Library». Archivado desde el original el 21 de mayo de 2010. Consultado el 23 de mayo de 2020. 
  4. ProposalProcess - CommonJS Spec Wiki
  5. CommonJS: the First Year - Blue Sky On Mars
  6. Schlueter, Isaac Z. (25 de marzo de 2013). «Forget CommonJS. It's dead. **We are server side JavaScript.**». GitHub. 
  7. «JavaScript Standard Library». CommonJS. Archivado desde el original el 28 de mayo de 2014. Consultado el 28 de mayo de 2014. 
  8. Server-side JavaScript development and hosting - Akshell
  9. «olegp/common-node @ GitHub». Archivado desde el original el 21 de noviembre de 2012. Consultado el 23 de mayo de 2020. 
  10. - GitHub
  11. DrBenton/CommonJSForPHP - GitHub
  12. Implementations/CouchDB - CommonJS Spec Wiki
  13. «Flusspferd - CommonJS platform | Javascript bindings for C». Archivado desde el original el 28 de enero de 2013. Consultado el 23 de mayo de 2020. 
  14. Implementations/GPSEE - CommonJS Spec Wiki
  15. Implementations/Smart - CommonJS Spec Wiki
  16. «Homepage - JSBuild». Archivado desde el original el 4 de enero de 2011. Consultado el 23 de mayo de 2020. 
  17. MongoDB
  18. Implementations/Narwhal - CommonJS Spec Wiki
  19. Implementations/node.js - CommonJS Spec Wiki
  20. Implementations/Persevere - CommonJS Spec Wiki
  21. pinf/loader-js - GitHub
  22. Implementations/RingoJS - CommonJS Spec Wiki
  23. «SilkJS WWW Site». Archivado desde el original el 12 de septiembre de 2017. Consultado el 23 de mayo de 2020. 
  24. Implementations/SproutCore - CommonJS Spec Wiki
  25. Implementations/TeaJS - CommonJS Spec Wiki
  26. «Wakanda». Archivado desde el original el 4 de junio de 2012. Consultado el 23 de mayo de 2020. 
  27. xuljet - XUL JavaScript Enhanced Toolkit - Google Project Hosting

Enlaces externos editar