You might like this, Eldar:

https://github.com/flatiron/broadway

It gives you dependency injection and IoC. We use it a lot in
flatiron, it's pretty sweet.

--Josh

On Fri, Jul 27, 2012 at 2:27 PM, Rob Ashton
<[email protected]> wrote:
> Yeah, sorry
>
> Not a real developer, never worked on a real project, excuse me for my
> ignorance.
>
> Lol jking
>
> Sigh
>
> Sent from my iPhone
>
> On 27 Jul 2012, at 20:33, Joe Developer <[email protected]> wrote:
>
> Erm, outside of the amateur hour projects just such functionality exists:
> http://blog.endpoint.com/2011/02/locally-served-yui3.html
>
> And yes, once you have had the pleasure of using it on non-trivial apps you
> miss it dearly when dealing with the ad-hoc structured or 'good enough
> rolled' alternatives.
>
> On Fri, Jul 27, 2012 at 11:47 PM, Martin Cooper <[email protected]> wrote:
>>
>> On Fri, Jul 27, 2012 at 8:07 AM, Rob Ashton <[email protected]>
>> wrote:
>> > Do we need dependency injection in nodejs? Well - if you mean dependency
>> > injection literally, we have it already, it looks like this
>> >
>> > function doSomething(dependency) {
>> >
>> > }
>> >
>> > doSomething(new FooDependency())
>> >
>> > or
>> >
>> > doSomething(new BarDependency())
>> >
>> > or
>> >
>> > var Animal = function(vocals) {
>> >   this.vocals = vocals
>> > }
>> >
>> > var cat = new Animal(miaow)
>> > cat dog = new Animal(woof)
>> >
>> > etc
>> >
>> > ----------
>> >
>> > If you're talking about  'container' support to support this, it's a
>> > road
>> > that has been trodden well by .NET and Java devs, and has been shown
>> > time
>> > and time again to lead full circle to the very beginning where you just
>> > build your object graphs manually and introduce extensibility points
>> > where
>> > you need them for either mocking out slow dependencies for testing or
>> > allowing consumers to control something about your code.
>> >
>> > Trying to bake in support to this as part of the require system seems
>> > like
>> > asking for trouble, keep it explicit, keep it as needed and let the
>> > goodness
>> > follow.
>>
>> I agree with this. If you need dependency injection, design it into
>> your system. Don't force it on unsuspecting modules.
>>
>> A couple of things that come to mind off the top of my head:
>>
>> * If I compel some module to use, say, 'my-funky-fs' instead of 'fs'
>> without knowing it, will that cause *its* dependencies to have their
>> usage of 'fs' replaced too? What if one of them was already replacing
>> it with something of its own choosing, perhaps using a different
>> mechanism (like maybe graceful-fs)?
>>
>> * If someone reports an issue with one of my packages, and I spend a
>> bunch of my time debugging it, only to discover that the reporter
>> replaced one of my dependencies with some other flaky substitute and
>> that's the culprit, I'm not going to be happy about that. I design my
>> packages to work with their declared dependencies, or I specifically
>> design for dependency injection if it's needed.
>>
>> > My two cents.
>>
>> And mine. :)
>>
>> --
>> Martin Cooper
>>
>>
>> > On Fri, Jul 27, 2012 at 4:45 PM, Eldar <[email protected]> wrote:
>> >>
>> >> Do we need this in Node?
>> >>
>> >> My answer is yes we need some (simple) way to specify the app level
>> >> dependencies  at runtime. Here is my take on this. Please checkout and
>> >> let
>> >> me know how do you feel about.
>> >>
>> >> But the idea is very simple:
>> >>
>> >>
>> >> // inside any index.js
>> >> var R = require('runtime').patchNative()
>> >> var use = R(module).use
>> >>
>> >> use('fs', 'node_modules/third/party', require('./smart-fs'))
>> >>
>> >> That's it. Third party module just uses our smart file system
>> >>
>> >> --
>> >> 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
>> >
>> >
>> > --
>> > 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
>>
>> --
>> 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
>
>
> --
> 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
>
> --
> 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



-- 
Joshua Holbrook
Head of Support
Nodejitsu Inc.
[email protected]

-- 
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

Reply via email to