2017-10-12 3 views
2

Webpack die folgende UMD Definition erzeugt:Welche Umwelt entstehen durch `if (typeof Exporte === 'object')` in UMD Definition

(function webpackUniversalModuleDefinition(root, factory) { 
    // this is CommonJS/Node 
    if(typeof exports === 'object' && typeof module === 'object') 
     module.exports = factory(); 
    // this is AMD 
    else if(typeof define === 'function' && define.amd) 
     define([], factory); 
    // what is this environment or standard? 
    else if(typeof exports === 'object')  <------------- ??? 
     exports["rx-core-libs"] = factory(); 
    // Window/Global 
    else 
     root["rx-core-libs"] = factory(); 
}) 

Meine Frage ist, was dies für Standard oder Umwelt?

else if(typeof exports === 'object') 

Es ist wie Commonjs aber ohne module.

Antwort

2

Nach this comment von @sokra:

Es gibt zwei verschiedene Commonjs Spezifikationen. CommonJS strict hat nur exportiert und keine module.exports. Node.js hat module.exports hinzugefügt, aber das ist nicht Teil der ursprünglichen Spezifikation.

This commonjs spec lautet:

  • in einem Modul gibt eine freie Variable „exportiert“ genannt wird, das heißt ein Objekt, dass das Modul seine API hinzuzufügen, kann als es ausführt. Module müssen das "exports" -Objekt als das einzige Exportmittel verwenden.

Deshalb webpack Abhängigkeiten durch exports Objekt exportiert:

else if(typeof exports === 'object') 
    exports["rx-core-libs"] = factory() 
Verwandte Themen