CommonJS
CommonJS är ett projekt med målet att etablera konventioner för modulens ekosystem för JavaScript utanför webbläsaren . Det primära skälet till att det skapades var en stor brist på allmänt accepterade former av JavaScript-modulenheter som kunde återanvändas i miljöer som skiljer sig från de som tillhandahålls av konventionella webbläsare som kör JavaScript-skript (t.ex. webbservrar eller inbyggda skrivbordsprogram) .
CommonJS modulspecifikation används flitigt idag, särskilt för server-side JavaScript-programmering med Node.js. Den används också i utvecklingen av webbläsarsidans JavaScript, men koden måste paketeras med en transpiler eftersom webbläsare inte stöder CommonJS. Den andra stora modulspecifikationen som används är ECMAScript (ES) modulerspecifikationen (ES6 moduler aka ES2015 moduler). CommonJS kan kännas igen genom att använda require()
och module.exports
, medan ES-moduler använder import-
och exportsatser
för liknande (men inte identisk) funktionalitet.
Historia
Projektet startades av Mozilla -ingenjören Kevin Dangoor i januari 2009 och fick ursprungligen namnet ServerJS .
Det jag beskriver här är inget tekniskt problem. Det handlar om att människor går samman och tar ett beslut att kliva fram och börja bygga upp något större och coolare tillsammans.
– Kevin Dangoor
I augusti 2009 döptes projektet om till CommonJS för att visa den bredare tillämpbarheten av API:erna . Specifikationer skapas och godkänns i en öppen process. En specifikation anses vara slutgiltig först efter att den har slutförts av flera implementeringar. CommonJS är inte anslutet till Ecma International -gruppen TC39 som arbetar med ECMAScript , men några medlemmar i TC39 deltar i projektet.
Specifikationer
Listan med specifikationer inkluderar:
Nuvarande
- Modules/1.0 (Ersatt av Modules/1.1)
- Moduler/1.1
- Moduler/1.1.1
- Paket/1.0
- System/1.0
Förslag
Förslagen omfattar mycket mer än moduler. De har för avsikt att definiera en uppsättning API:er som är användbara både för icke-webb JavaScript-implementeringar, med standardiserade paketnamn för att ge interoperabilitet inom ekosystemet. Detta mål överlappar ibland det för TC39, och delar som Promises har verkligen gjort det till själva ECMAScript.
Delen efter snedstrecket är versionen. När ett förslag är aktuellt tilldelas varje enskilt förslag (inklusive sekventiella revisioner från samma författare) ett nytt brev. När huvudriktningen är känd börjar den tilldelas numeriska versioner.
- Binär/B,F
- Konsol (porterad från webben)
- Kodningar/A,C
- Kodningar/A
- HTTP-klient/B
- IO/A
- Filsystem/A,A/0
- Moduler/Async/A
- Moduler/AsynchronousDefinition
- Moduler/LoaderPlugin
- Moduler/Resurser
- Moduler/SimpleAsynchronous
- Moduler/Transport/B,C,D,E
- Moduler/omslag
- Moduler/omslag-Explicit-Beroenden
- Paket/1.1
- Paket/AsynchronousDefinition
- Paket/Mappningar/A,B,C,D
- Löften/B,D
- Enhetstestning/B,1.0,1.0.1
Genomföranden
- Gemensam nod
- CommonJS Compiler - ett kommandoradsverktyg som gör Common JS-moduler lämpliga för användning i webbläsaren
- CommonJS för PHP - en lätt CommonJS-implementering för PHP 5.3+
- CouchDB
- Flusspferd
- GPSEE
- Ryggraket
- Joyent Smart Platform
- JSBuild
- MongoDB
- Narwhal (JavaScript-plattform)
- Node.js (partiell; synkron)
- Hålla ut
- PINF JavaScript-lastare
- RingoJS
- SilkJS
- SproutCore
- TeaJS
- Wakanda
- XULJet
- QUnit
Se även
- Asynkron moduldefinition (AMD), en annan JavaScript-modularkitektur
- Jämförelse av JavaScript-lösningar på serversidan
- Document Object Model (DOM), ett applikationsprogrammeringsgränssnitt (API) för webbläsare på klientsidan som är allmänt tillgängligt i JavaScript
- JSGI
externa länkar
- Officiell hemsida
- "CommonJS-ansträngning sätter JavaScript på väg för världsherravälde" . Ars Technica . dec 2009.