there is no magic. at all. what whatever is assigned to module.exports is returned to requiring code. the exports is initally set up to be a shortcut reference to module.exports if you assign something to module.exports you have to assign the same thing to exports if you want to keep this reference intact. so if you want to re-assign this do it this way:
module.exports = exports = myNewGreatExports so if you do so, everything is ok and in place and you can still use the shortcut. You also can just not use the shortcut and use always the longer form. Am Mittwoch, 16. Oktober 2013 08:40:38 UTC+2 schrieb yougen zhuang: > > Not exactly. If just setting "exports" would not work, for example, > exports = Rect, than in another file, assuming main.js, var Rect = > require('Rect'), var rect = new Rect() will fail. > > 在 2013年10月15日星期二UTC+8下午8时33分15秒,greelgorke写道: >> >> module.exports and exports are referencing the same object. if you do >> module.exports = foo, both point to different objects. if you want to >> assign to module.exports and keep the shortcut exports correct do this >> >> module.exports = exports = foo >> >> simple reference handling, there is no magic behind. >> >> Am Dienstag, 15. Oktober 2013 12:22:29 UTC+2 schrieb yougen zhuang: >>> >>> Before assign value to exports, module.exports === exports, but after >>> assign value, they're not equal. In my view, they're point to the same >>> reference. >>> BTW, if I modify to module.exports.Rect = Rect, then module.exports === >>> exports >>> >>> function Rect(w,h) { >>> this.w = w; >>> this.h = h; >>> }; >>> >>> Rect.prototype.area = function(){ >>> return this.w*this.h; >>> }; >>> >>> console.log(module.exports === exports);//true >>> module.exports = Rect; >>> console.log(module.exports); >>> console.log(exports); >>> console.log(module.exports === exports);//false >>> >>> >>> -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.