exports導出的是一個執行個體對象。
要調用導出的方法或者屬性時,要用目前執行個體對象去調用。如下述代碼中,導出的是builds對象,使用getAllBuilds方法時要調用此方法。
exports.js
const builds = {
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
'web-runtime-cjs-dev': {
entry: 'web/entry-runtime.js',
},
'web-runtime-cjs-prod': {
entry: 'web/entry-runtime.js',
},
// Runtime+compiler CommonJS build (CommonJS)
'web-full-cjs-dev': {
entry:'web/entry-runtime-with-compiler.js',
}
}
exports.getAllBuilds = () => Object.keys(builds);
test.js
let builds = require('./export');
console.log(builds);
console.log("-------------------");
console.log(builds.getAllBuilds);
console.log("-------------------");
console.log(builds.getAllBuilds());
執行結果:
module.exports導出的是對象本身
如下述代碼中,導出的就是一個Function,可以直接執行
exports.js
const builds = {
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
'web-runtime-cjs-dev': {
entry: 'web/entry-runtime.js',
},
'web-runtime-cjs-prod': {
entry: 'web/entry-runtime.js',
},
// Runtime+compiler CommonJS build (CommonJS)
'web-full-cjs-dev': {
entry:'web/entry-runtime-with-compiler.js',
}
}
module.exports = () => Object.keys(builds);
// exports.getAllBuilds = () => Object.keys(builds);
test.js
let builds = require('./export');
console.log(builds);
console.log("-------------------");
console.log(builds());
執行結果:
說明:
exports和module.exports不要同時使用,否則,module.exports會覆寫exports.即exports失效。