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

externa länkar