CommonJS es 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 una gran falta de formas comúnmente aceptadas de unidades de módulo JavaScript que pudieran ser reutilizables en entornos diferentes a los proporcionados por los navegadores web convencionales que ejecutan scripts JavaScript (por ejemplo, servidores web o aplicaciones de escritorio nativas ).
Especificación del módulo de CommonJS es ampliamente utilizado hoy en día, en particular para el lado del servidor de programación JavaScript con Node.js . [1] También se utiliza en el desarrollo de JavaScript del lado del navegador, pero el código debe estar empaquetado con un transpilador ya que los navegadores no son compatibles con CommonJS. [1] La otra especificación principal del módulo del lado del servidor en uso es la especificación de los módulos ES (módulos ES6 también conocidos como módulos ES2015). [2] CommonJS pueden ser reconocidos por el uso de la require()
función y module.exports
, mientras que los módulos ES utilizan import
y export
declaraciones para la funcionalidad similar (aunque no idéntico).
Historia
El proyecto fue iniciado por el ingeniero de Mozilla Kevin Dangoor en enero de 2009 e inicialmente se llamó ServerJS . [3]
Lo que estoy describiendo aquí no es un problema técnico. Es una cuestión de que las personas se reúnan y tomen la decisión de dar un paso adelante y comenzar a construir juntos algo más grande y genial.
- 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 finalizada 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]
Especificaciones
La lista de especificaciones incluye: [7]
Actual
- Módulos / 1.0 (Reemplazado 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. Tienen la intención de definir un conjunto de API 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 de TC39, y partes como Promises de hecho se han convertido en ECMAScript.
La parte que sigue a la barra es la versión. Cuando una propuesta está en disputa, a cada propuesta individual (incluidas las revisiones secuenciales del mismo autor) se le asigna una nueva letra. Cuando se conoce la dirección principal, comienza a asignársele versiones numéricas.
- Binario / B, F
- Consola (portado desde la Web)
- Codificaciones / A, C
- Codificaciones / A
- Cliente HTTP / B
- IO / A
- Sistema de archivos / A, A / 0
- Módulos / Async / A
- Módulos / Definición asincrónica
- Módulos / LoaderPlugin
- Módulos / Recursos
- Módulos / SimpleAsynchronous
- Módulos / Transporte / B, C, D, E
- Módulos / Envoltorios
- Módulos / Envoltorios-Dependencias-explícitas
- Paquetes / 1.1
- Paquetes / Definición asincrónica
- Paquetes / Mapeos / A, B, C, D
- Promesas / B, D
- Prueba unitaria / B, 1.0,1.0.1
Implementaciones
- Nodo común [8]
- CommonJS Compiler: 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 de CommonJS ligera para PHP 5.3+ [10]
- CouchDB [11]
- Flusspferd [12]
- GPSEE [13]
- Jetpack
- Plataforma inteligente Joyent [14]
- JSBuild [15]
- MongoDB [16]
- Narwhal (plataforma JavaScript) [17]
- Node.js (parcial; sincrónico) [18]
- Persevera [19]
- Cargador de JavaScript PINF [20]
- RingoJS [21]
- SilkJS [22]
- SproutCore [23]
- TeaJS [24]
- Wakanda [25]
- XULJet [26]
- QUnit
Ver también
- Definición de módulo asíncrono (AMD), otra arquitectura de módulo de JavaScript
- Comparación de soluciones JavaScript del lado del servidor
- Document Object Model (DOM), una interfaz de programación de aplicaciones (API) del lado del cliente del navegador web comúnmente disponible en JavaScript
- JSGI
Referencias
- ↑ a b Eric Elliott (26 de junio de 2014). Programación de aplicaciones JavaScript: arquitectura web robusta con bibliotecas Node, HTML5 y 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ñe e implemente aplicaciones de Node.js de nivel de producción utilizando patrones y técnicas comprobados, tercera edición . Packt Publishing. pag. 62. ISBN 978-1-83921-044-0.
- ^ a b Qué necesita JavaScript del lado del servidor: Blue Sky On Mars
- ^ CommonJS: Biblioteca estándar de JavaScript
- ^ ProposalProcess - Wiki de especificaciones de CommonJS
- ^ CommonJS: el primer año - Cielo azul en Marte
- ^ "Biblioteca estándar de JavaScript" . CommonJS. Archivado desde el original el 28 de mayo de 2014 . Consultado el 28 de mayo de 2014 .CS1 maint: URL no apta ( enlace )
- ^ olegp / nodo común @ GitHub
- ^ - GitHub
- ^ DrBenton / CommonJSForPHP - GitHub
- ^ Implementaciones / CouchDB - CommonJS Spec Wiki
- ^ Flusspferd - Plataforma CommonJS | Enlaces de JavaScript para C
- ^ Implementaciones / GPSEE - CommonJS Spec Wiki
- ^ Implementaciones / Inteligente - CommonJS Spec Wiki
- ^ Página de inicio - JSBuild Archivado el 4 de enero de 2011 en la Wayback Machine.
- ^ MongoDB
- ^ Implementaciones / Narwhal - CommonJS Spec Wiki
- ^ Implementaciones / node.js - Wiki de especificaciones de CommonJS
- ^ Implementaciones / Persevera - CommonJS Spec Wiki
- ^ pinf / loader-js - GitHub
- ^ Implementaciones / RingoJS - CommonJS Spec Wiki
- ^ "Sitio WWW de SilkJS" . Archivado desde el original el 12 de septiembre de 2017 . Consultado el 19 de octubre de 2012 .
- ^ Implementaciones / SproutCore - CommonJS Spec Wiki
- ^ Implementaciones / TeaJS - CommonJS Spec Wiki
- ^ Wakanda
- ^ xuljet - Kit de herramientas mejorado de XUL JavaScript - Alojamiento de proyectos de Google
enlaces externos
- Página web oficial
- "El esfuerzo de CommonJS pone a JavaScript en el camino de la dominación mundial" . Ars Technica . Diciembre de 2009.