2017-10-12 17 views
2

Webpack génère la définition UMD suivante:Quel environnement devrait par `si (exportations typeof === « objet »)` dans UMD définition

(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(); 
}) 

Ma question est quelle est cette norme ou de l'environnement pour?

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

Il est comme CommonJS mais sans module.

Répondre

2

Selon this comment par @sokra:

Il y a deux spécifications de CommonJS différentes. CommonJS strict a seulement exportations et aucun module.exports. Node.js a ajouté module.exports mais c'est qui ne fait pas partie de la spécification d'origine.

This commonjs états spécifications que:

  • Dans un module, il y a une variable libre appelée « exportations », qui est un objet que le module peut ajouter son API pour son exécution. Les modules doivent utiliser l'objet "exports" comme seul moyen d'exportation.

C'est pourquoi les exportations webpack dépendances par objet exports:

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