Correct way of exporting module
本问题已经有最佳答案,请猛点这里访问。
假设我有下面的模块
导出此模块的正确方法是什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 'use strict'; var fs = require('fs'); var mkdirp = require('mkdirp'); var makeDir = {}; makeDir.handler = function (dstPath, sizesObj, callback) { var _path = dstPath + sizesObj.name +"/"; fs.lstat(_path, function (err, stats) { if (err) { mkdirp(_path, function (err, made) { if (err) { console.log("Error creating directory: %s", err); callback (err, null); } else { console.log("Created new directory"); callback(null, made); } }); } else { callback(null); } }); }; module.exports = makeDir; |
使用module.exports或module.exports.functionu name的两种方法都可以,但在需要这些函数时会有不同。
让我用一个例子来说明区别。
a.将功能直接分配给模块输出
1 2 3 4 5 6 7 8 | // mkdir.js module.exports = function(){ console.log("make directory function"); }; // app.js var mkdir = require("mkdir.js"); mkdir(); // prints make directory function |
b.在module.exports属性中导出函数
1 2 3 4 5 6 7 8 | // mkdir.js module.exports.first = function(){ console.log('make directory function'); }; // app.js var mkdir = require('mkdir.js'); mkdir.mkdir(); // make directory function |
希望它有帮助!
如果只从javascript文件导出一个对象,则是正确的方法。
如果需要导出多个对象
1 2 3 4 5 | var makeDir = { obj1 : function(){}, obj2 : function(){} } module.exports = makeDir; |
这样,您就可以在其他文件中使用