由`如果(typeof运算出口===“对象”)`在UMD定义
问题描述:
的WebPack生成以下定义UMD预计在什么环境:由`如果(typeof运算出口===“对象”)`在UMD定义
(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();
})
我的问题是,这是什么标准或环境?
else if(typeof exports === 'object')
这就像CommonJS但没有module
。
答
根据this comment由@sokra:
有两种不同的规格CommonJS的。 CommonJS严格只有 导出并且没有module.exports。 Node.js添加了module.exports,但这不是原始规范的一部分。
This commonjs规范规定:
- 在模块中,有一个名为“出口”*变量,这是一个 对象,该模块可以将其API增加,因为它执行。 模块必须 使用“出口”对象作为唯一的出口手段。
这就是为什么通过的WebPack对象exports
出口的依赖关系:
else if(typeof exports === 'object')
exports["rx-core-libs"] = factory()