LinkJS: Communicate between modules using HTTP-style requests.
github.com
github.com
I don't see any reason to put this stuff back into module interfaces when we already have module.exports -- and we can already use http.createServer on localhost if we want a (real, externally-compatible) HTTP interface to a module.
The unified interface is meant to allow code to hide behind codified intentions: the requests. If a module makes a request to a configured URI, it encodes enough information in the request that any piece of code could step in to fulfill it.
This is the case in the *nix command line as well; you can compose command sequences which could be handled by whatever program is referred to.
The browser, however, doesn't really have an exchange system like that. It's up to the applications to specify how things are corralled, and that's why we have stuff like Backbone.js. Link is trying a different approach that focuses more on the operations level, abstracting the exchange between code so they can live independently.
unix uses pipes to pass data between processes in different address spaces, your JS runs in the same address space as the calling JS.
if the processes exist in the same address space you use a library, which is an implementation of a defined set of functions (which is itself an interface); this is flat out better as it requires no tedious, error prone serialisation.
So LinkJS is dependency injection. It makes it possible to configure code into the application.