脚本宝典收集整理的这篇文章主要介绍了node 模块开发的一个小坑,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
导出函数时,你可以
module.exports.foo = function (){}
也可以
exports.foo = function (){}
后者可以少打几个字。对于追求简洁的人来说,这个小特性还是比较招人爱。
你可以设置整个module.exports 为一个函数
module.exports = function (){}
可是,你却不可以这样:
exports = function (){}
想知道原因的话,得假想每个module在装入时,有这样的一段代码
var module = new Module(...);
var exports = module.exports;
是v8在一个js文件内插入两个对象:exports , module.exports,并让exports指向module.exports,这样,对exports属性的任何添加和修改,都会导致module.exports的添加和修改。
可是两者并非完全等效。因为对整个对象赋值的话,效果和我们期望的就不一样了。exports会指向我们的函数,而不再和module.exports有任何关系。然后真正会被V8导出的是module.exports,而不是exports。所以,exports的方式,根本不能整体导出一个没有放到属性中的函数。
真是恼人的不一致。
为此,有些人想到的方法,就是干脆连等:
module.exports = exports = foo = function foo() {...}
这样的boilerplate ,常常可以在模块开发代码中看到,有点古怪,却自有它的道理
以上是脚本宝典为你收集整理的node 模块开发的一个小坑全部内容,希望文章能够帮你解决node 模块开发的一个小坑所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。