CommonJS es un proyecto para estandarizar el ecosistema de módulos para JavaScript fuera de los navegadores web (por ejemplo, en servidores web o aplicaciones de escritorio nativas ).
La especificación CommonJS sobre cómo deben funcionar los módulos se usa ampliamente hoy en día para JavaScript del lado del servidor con Node.js. [ 1 ] También se usa para JavaScript del lado del navegador, pero ese código debe empaquetarse con un transpilador ya que los navegadores no admiten CommonJS. [ 1 ] La otra especificación de módulos principal en uso es la especificación de módulos ECMAScript (ES) (módulos ES6 también conocidos como módulos ES2015). [ 2 ] CommonJS se puede reconocer por el uso de la require()función y module.exports, mientras que los módulos ES usan declaraciones importy para una funcionalidad similar (aunque no idéntica).export
Historia
El proyecto fue iniciado por el ingeniero de Mozilla Kevin Dangoor en enero de 2009 y se denominó inicialmente ServerJS . [ 3 ]
Lo que describo aquí no es un problema técnico. Se trata de que la gente se reúna y decida dar un paso al frente y empezar a construir algo más grande e interesante juntos.
— Kevin Dangoor [ 3 ]
En agosto de 2009, el proyecto pasó a llamarse CommonJS para mostrar la aplicabilidad más amplia de las API . [ 4 ] Las especificaciones se crean y aprueban en un proceso abierto. Una especificación solo se considera final después de que ha sido terminada por múltiples implementaciones. [ 5 ] CommonJS no está afiliado al grupo TC39 de Ecma International que trabaja en ECMAScript , pero algunos miembros de TC39 participan en el proyecto. [ 6 ]
Presupuesto
La lista de especificaciones incluye: [ 7 ]
Actual
- Módulos/1.0 (Sustituido por Módulos/1.1)
- Módulos/1.1
- Módulos/1.1.1
- Paquetes/1.0
- Sistema/1.0
Propuestas
Las propuestas abarcan mucho más que módulos. Su objetivo es definir un conjunto de API útiles tanto para implementaciones de JavaScript fuera del ámbito web, con nombres de paquetes estandarizados para garantizar la interoperabilidad dentro del ecosistema. Este objetivo a veces coincide con el de TC39, y algunas funcionalidades, como las Promises, ya se han incorporado a ECMAScript.
La parte que sigue a la barra diagonal indica la versión. Cuando una propuesta está en disputa, a cada propuesta individual (incluidas las revisiones sucesivas del mismo autor) se le asigna una letra nueva. Cuando se conoce la dirección principal, se empiezan a asignar versiones numéricas.
- Binario/B,F
- Consola (adaptada desde la web)
- Codificaciones/A,C
- Codificaciones/A
- Cliente HTTP/B
- E/S/A
- Sistema de archivos/A,A/0
- Módulos/Asíncrono/A
- Módulos/Definición asíncrona
- Módulos/Complemento de carga
- Módulos/Recursos
- Módulos/SimpleAsynchronous
- Módulos/Transporte/B,C,D,E
- Módulos/Envoltorios
- Módulos/Envolturas-Dependencias-Explícitas
- Paquetes/1.1
- Paquetes/Definición asíncrona
- Paquetes/Asignaciones/A,B,C,D
- Promesas/B,D
- Pruebas unitarias/B,1.0,1.0.1
Implementaciones
- Nodo común [ 8 ]
- Compilador CommonJS: una herramienta de línea de comandos que hace que los módulos Common JS sean adecuados para su uso en el navegador [ 9 ].
- CommonJS para PHP: una implementación ligera de CommonJS para PHP 5.3+ [ 10 ]
- CouchDB [ 11 ]
- Flusspferd [ 12 ]
- GPSEE [ 13 ]
- Mochila propulsora
- Plataforma inteligente Joyent [ 14 ]
- JSBuild [ 15 ]
- MongoDB [ 16 ]
- Narwhal (plataforma JavaScript) [ 17 ]
- Node.js (parcial; síncrono) [ 18 ]
- Perseverar [ 19 ]
- Cargador JavaScript PINF [ 20 ]
- PythonMonkey implementa un entorno CommonJS Modules/1.1.1 que puede cargar módulos escritos en JavaScript o Python (o ambos). [ 21 ]
- RingoJS [ 22 ]
- SilkJS [ 23 ]
- SproutCore [ 24 ]
- TeaJS [ 25 ]
- Wakanda [ 26 ]
- XULJet [ 27 ]
- QUnit
Véase también
- Definición de módulo asíncrono (AMD), otra arquitectura de módulos de JavaScript
- Comparación de soluciones JavaScript del lado del servidor
- El Modelo de Objetos del Documento (DOM) es una interfaz de programación de aplicaciones (API) del lado del cliente del navegador web , comúnmente disponible en JavaScript.
- JSGI
Referencias
- 1 2 Eric Elliott (26 de junio de 2014). Programación de aplicaciones JavaScript: Arquitectura web robusta con Node, HTML5 y bibliotecas JS modernas . O'Reilly Media, Inc. págs. 87–. ISBN 978-1-4919-5027-2.
- ↑ Mario Casciaro; Luciano Mammino (29 de julio de 2020). Patrones de diseño de Node.js: Diseña e implementa aplicaciones Node.js de nivel de producción utilizando patrones y técnicas probadas, 3.ª edición . Packt Publishing. pág. 62. ISBN 978-1-83921-044-0.
- 1 2 "Lo que necesita JavaScript del lado del servidor ·" . www.blueskyonmars.com . Consultado el 5 de agosto de 2021 .
- ↑ "CommonJS: Biblioteca estándar de JavaScript" . www.commonjs.org . Archivado del original el 13 de noviembre de 2017. Consultado el 5 de agosto de 2021 .
- ↑ "ProposalProcess - CommonJS Spec Wiki" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "CommonJS: el primer año ·" . www.blueskyonmars.com . Consultado el 5 de agosto de 2021 .
- ↑ "Biblioteca estándar de JavaScript" . CommonJS. Archivado del original el 28 de mayo de 2014. Consultado el 28 de mayo de 2014 .
- ↑ "olegp/common-node @ GitHub" . olegp.github.io . Consultado el 5 de agosto de 2021 .
- ↑ "Compilador CommonJS: hace que tus módulos Common JS sean adecuados para su uso en el navegador" . dsheiko.github.io . Consultado el 5 de agosto de 2021 .
- ↑ "GitHub - DrBenton/CommonJSForPHP: Una implementación sencilla de la especificación CommonJS para PHP 5.3+" . GitHub . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/CouchDB - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Flusspferd - Plataforma CommonJS | Enlaces de Javascript para C" . Archivado del original el 28 de enero de 2013. Consultado el 19 de septiembre de 2017 .
- ↑ "Implementaciones/GPSEE - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/Inteligente - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Página principal - JSBuild" . Archivado del original el 4 de enero de 2011.
- ↑ "La base de datos más popular para aplicaciones modernas" . MongoDB . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/Narwhal - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/node.js - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/Perseverar - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "GitHub - pinf/loader-js: EXPLORACIÓN TEMPRANA ESTANCADA" . GitHub . 30 de julio de 2021. Consultado el 5 de agosto de 2021 .
- ↑ "Distributive-Network/PythonMonkey: Un motor JavaScript SpiderMonkey de Mozilla integrado en la máquina virtual de Python, que utiliza el motor de Python para proporcionar el entorno de host JS" . GitHub . 7 de julio de 2023. Consultado el 10 de julio de 2023 .
- ↑ "Implementaciones/RingoJS - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Sitio web SilkJS" . Archivado del original el 12 de septiembre de 2017. Consultado el 19 de octubre de 2012 .
- ↑ "Implementaciones/SproutCore - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ "Implementaciones/TeaJS - Wiki de la especificación CommonJS" . wiki.commonjs.org . Consultado el 5 de agosto de 2021 .
- ↑ SAS, Wakanda. "Plataforma JavaScript FullStack de Wakanda" . Plataforma JavaScript FullStack de Wakanda . Consultado el 5 de agosto de 2021 .
- ↑ "Archivo de Google Code: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code" . code.google.com . Consultado el 5 de agosto de 2021 .
Enlaces externos
- Sitio web oficial
- "El proyecto CommonJS encamina a JavaScript hacia la dominación mundial" . Ars Technica . Diciembre de 2009.
- JavaScript