CommonJS
CommonJS er et projekt, der har til formål at standardisere moduløkosystemet for JavaScript uden for webbrowsere (f.eks. på webservere eller native desktopapplikationer ).
CommonJS’ specifikation af, hvordan moduler skal fungere, bruges i dag i vid udstrækning til server-side JavaScript med Node.js.[1] Det bruges også til JavaScript på browsersiden, men den kode skal pakkes med en transpiler, da browsere ikke understøtter CommonJS. [1] Den anden vigtige modulspecifikation, der er i brug, er ECMAScript (ES) modulspecifikationen (ES6-moduler også kendt som ES2015-moduler). [2] CommonJS kan genkendes ved brugen af kræve()
funktionen og modul.eksport
, mens ES-moduler bruger import
og export
sætninger til lignende (men ikke identiske) funktionaliteter.
Historie
[redigér | rediger kildetekst]Projektet blev startet af Mozilla ingeniøren Kevin Dangoor i januar 2009 og hed oprindeligt ServerJS. [3]
“ | Det, jeg beskriver her, er ikke et teknisk problem. Det handler om, at folk går sammen og træffer en beslutning om at træde frem og begynde at bygge noget større og sejere op sammen. | ” |
— Kevin Dangoor[3]
|
I august 2009 blev projektet omdøbt til CommonJS for at vise den bredere anvendelighed af APIs. [4] Specifikationer udarbejdes og godkendes i en åben proces. En specifikation betragtes først som endelig, når den er blevet færdiggjort ved flere implementeringer. [5] CommonJS er ikke tilknyttet Ecma International gruppen TC39, der arbejder med ECMAScript, men nogle medlemmer af TC39 deltager i projektet. [6]
Specifikationer
[redigér | rediger kildetekst]Listen over specifikationer omfatter: [7]
Strøm
[redigér | rediger kildetekst]- Modules/1.0 (Superseded by Modules/1.1)
- Modules/1.1
- Modules/1.1.1
- Packages/1.0
- System/1.0
Forslag
[redigér | rediger kildetekst]Forslagene omfatter meget mere end blot moduler. De har til formål at definere et sæt API’er, som også er nyttige for ikke-web JavaScript-implementeringer, med standardiserede pakkenavne for at skabe interoperabilitet i økosystemet. Dette mål overlapper til tider med TC39’s arbejde, og dele som Promises er faktisk blevet en del af selve ECMAScript.
Delen efter skråstregen er versionen. Når et forslag er til diskussion, tildeles hvert enkelt forslag (inklusive sekventielle revisioner fra samme forfatter) et nyt bogstav. Når hovedretningen er kendt, begynder den at blive tildelt numeriske versioner.
- 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
Implementeringer
[redigér | rediger kildetekst]- Common Node[8]
- CommonJS Compiler - a command-line tool that makes Common JS modules suitable for in-browser use[9]
- CommonJS for PHP - a light-weight CommonJS implementation for PHP 5.3+[10]
- CouchDB[11]
- Flusspferd[12]
- GPSEE[13]
- Jetpack
- Joyent Smart Platform[14]
- JSBuild[15]
- MongoDB[16]
- Narwhal (JavaScript platform)[17]
- Node.js (partial; synchronous)[18]
- Persevere[19]
- PINF JavaScript Loader[20]
- PythonMonkey implements a CommonJS Modules/1.1.1 environment which can load modules written in either JavaScript or Python (or both).[21]
- RingoJS[22]
- SilkJS[23]
- SproutCore[24]
- TeaJS[25]
- Wakanda[26]
- XULJet[27]
- QUnit
Se også
[redigér | rediger kildetekst]- Asynkron moduldefinition (AMD), en anden JavaScript-modularkitektur
- Sammenligning af server-side JavaScript-løsninger
- Document Object Model (DOM), en webbrowser -klientside applikationsprogrammeringsgrænseflade (API), der almindeligvis er tilgængelig i JavaScript
- JSGI
Referencer
[redigér | rediger kildetekst]- ^ a b Eric Elliott (26 juni 2014). Programming JavaScript Applications: Robust Web Architecture with Node, HTML5, and Modern JS Libraries. "O'Reilly Media, Inc.". s. 87–. ISBN 978-1-4919-5027-2.
{{cite book}}
: CS1-vedligeholdelse: Dato automatisk oversat (link) - ^ Mario Casciaro; Luciano Mammino (29 juli 2020). Node.js Design Patterns: Design and implement production-grade Node.js applications using proven patterns and techniques, 3rd Edition. Packt Publishing. s. 62. ISBN 978-1-83921-044-0.
{{cite book}}
: CS1-vedligeholdelse: Dato automatisk oversat (link) - ^ a b "What Server Side JavaScript needs ·". www.blueskyonmars.com. Hentet 2021-08-05.
- ^ "CommonJS: JavaScript Standard Library". www.commonjs.org. Arkiveret fra originalen 2017-11-13. Hentet 2021-08-05.
- ^ "ProposalProcess - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "CommonJS: the First Year ·". www.blueskyonmars.com. Hentet 2021-08-05.
- ^ "JavaScript Standard Library". CommonJS. Arkiveret fra originalen den 2014-05-28. Hentet 2014-05-28.
{{cite web}}
: CS1-vedligeholdelse: Uegnet url (link) - ^ "olegp/common-node @ GitHub". olegp.github.io. Hentet 2021-08-05.
- ^ "CommonJS Compiler - makes your Common JS modules suitable for in-browser use". dsheiko.github.io. Hentet 2021-08-05.
- ^ "GitHub - DrBenton/CommonJSForPHP: A simple CommonJS spec implementation for PHP 5.3+". GitHub (engelsk). Hentet 2021-08-05.
- ^ "Implementations/CouchDB - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Flusspferd - CommonJS platform | Javascript bindings for C". Arkiveret fra originalen 2013-01-28. Hentet 2017-09-19.
- ^ "Implementations/GPSEE - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Implementations/Smart - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Homepage - JSBuild". Arkiveret fra originalen januar 4, 2011.
{{cite web}}
: CS1-vedligeholdelse: Dato automatisk oversat (link) - ^ "The most popular database for modern apps". MongoDB (amerikansk engelsk). Hentet 2021-08-05.
- ^ "Implementations/Narwhal - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Implementations/node.js - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Implementations/Persevere - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "GitHub - pinf/loader-js: EARLY STALLED EXPLORATION". GitHub (engelsk). 30 juli 2021. Hentet 2021-08-05.
{{cite web}}
: CS1-vedligeholdelse: Dato automatisk oversat (link) - ^ "Distributive-Network/PythonMonkey: A Mozilla SpiderMonkey JavaScript engine embedded into the Python VM, using the Python engine to provide the JS host environment". GitHub. 2023-07-07. Hentet 2023-07-10.
- ^ "Implementations/RingoJS - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "SilkJS WWW Site". Arkiveret fra originalen 2017-09-12. Hentet 2012-10-19.
- ^ "Implementations/SproutCore - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ "Implementations/TeaJS - CommonJS Spec Wiki". wiki.commonjs.org. Hentet 2021-08-05.
- ^ SAS, Wakanda. "Wakanda FullStack JavaScript Platform". Wakanda FullStack JavaScript Platform (engelsk). Hentet 2021-08-05.
- ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Hentet 2021-08-05.
Eksterne links
[redigér | rediger kildetekst]- Officiel hjemmeside
- Kowal, Kris (dec. 2009). "CommonJS effort sets JavaScript on path for world domination". Ars Technica.
{{cite web}}
: CS1-vedligeholdelse: Dato automatisk oversat (link)