Thanks for all the feedback guys, still trying to learn all the intricacies of the module system, and just the best patterns to use. I remember reading somewhere (I'll have to dig it up, though Crockford comes to mind), that the the "createLogger()" type of pattern is the preferred one. I see it in a lot of libraries. Never really saw the point in that myself, seems more restrictive.
What I basically want to do is have the main exports be the instantiated object (of anything), but a static init() function. Just gotta play with all your suggestions and see how it works. Thanks guys! On Sat, Mar 23, 2013 at 9:08 PM, Rick Waldron <[email protected]>wrote: > > > > On Sat, Mar 23, 2013 at 8:29 PM, Ilya Shaisultanov < > [email protected]> wrote: > >> Weird >> >> >> module.exports = Logger; >> // ... >> >> module.exports.createLogger = function createLogger(options) { >> >> >> return new Logger(options); >> >> >> }; >> >> >> Maybe compatibility with old API? >> > > > Hilarious. I control-F'ed for "createLogger". All of the README uses > "createLogger". Makes me happy to see that I was at least half wrong and > also that you could use Mikeal's suggestion for "path of nicest api". > > Anyway, now I'm wondering why module.exports is being set to the > constructor function object itself, AND THEN expando properties are > defined. Why not define them as static properties on Logger and have _one_ > export? > > Again, feel free to ignore me. (I'm turning into Statler and (or) Waldorf). > > Rick > > > >> >> On Saturday, March 23, 2013 8:25:03 PM UTC-4, Mikeal Rogers wrote: >> >>> var logger = bunyan(); >>> >>> :) >>> >>> -Mikeal >>> >>> On Mar 23, 2013, at 5:22PM, Rick Waldron <[email protected]> wrote: >>> >>> I might be half-trolling here... >>> >>> >>> On Fri, Mar 22, 2013 at 1:50 AM, Nabeel S. <[email protected]> wrote: >>> >>>> >>>> var logger = bunyan.createLogger(...); >>>> >>> >>> Why do module authors make gross factory APIs? >>> >>> Instead of wrapping the export in this icky "createLogger" method, that >>> doesn't do _anything_ (one assumes a factory exists to provide some >>> additional layer of logic over the base constructor, or else what is the >>> point?), why not export the constructor? >>> >>> var logger = new bunyan.Logger(); >>> >>> Yay, much nicer. >>> >>> Feel free to completely ignore me. >>> >>> Rick >>> >>> >>> >>> >>> -- >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: https://github.com/joyent/**node/wiki/Mailing-List-* >>> *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 [email protected] >>> >>> To unsubscribe from this group, send email to >>> nodejs+un...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>> >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >>> >>> -- >> -- >> 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 [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> 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 [email protected]. >> >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > -- > 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 [email protected] > To unsubscribe from this group, send email to > [email protected] > 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 a topic in the > Google Groups "nodejs" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/nodejs/peTzWLT9gpQ/unsubscribe?hl=en. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- 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 [email protected] To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
