extended
extended
is a wrapper than sits on top of extender
than allows you to combine multiple libraries into a single API.
This allows you create a feature rich API that only includes the functionality that you wish to have.
Extended is also browser friendly so you can create a utility library that is reusable on both in node and the browser.
Why?
Often times I end up using quite a few libraries in a single node project, extended
allows you to seamlessly integrate libraries into a single interface.
You also get the added benefit of replacing libraries without having to change you code every place that they were required.
Installation
npm install extended
Or download the source (minified)
Usage
register
The register method allows you to register a library with extended.
The following example makes use of
Notice how all the APIs are completely integrated together, so you can use the chaining API from each registered library in a single unified interface.
var _ = extended()
.register(require("array-extended"))
.register(require("string-extended"))
.register(require("date-extended"))
.register(require("function-extended"))
.register(require("is-extended"))
.register(require("object-extended"))
.register(require("promise-extended"));
_.isArray([]);
_.format("{first} {last}", {first : "Bob", last : "yukon"});
_({hello : "hello", world: "world"}).keys().map(function(key, index){
return _.format("%d key is %s", index + 1, key);
}).value().join(";");
If you want to namespace you API you can provide an alias.
var _ = extended()
.register("array", require("array-extended"))
.register("string", require("string-extended"))
.register("date", require("date-extended"))
.register("fn", require("function-extended"))
.register("is", require("is-extended"))
.register("obj", require("object-extended"))
.register("promise", require("promise-extended"));
_.is.isArray([]);
_.string.format("{first} {last}", {first : "Bob", last : "yukon"});
Integration with other libraries.
You can also integrate other libraries by just mixing in their functions.
Suppose you dont want to use promise-extended
but instead Q
.
var _ = extended()
.register(require("array-extended"))
.register(require("string-extended"))
.register(require("date-extended"))
.register(require("function-extended"))
.register(require("is-extended"))
.register(require("object-extended"))
.register(require("q"));
_.resolve("hello").then(function(hello){
console.log("hello");
})
Or maybe you want to continue to use underscore
with added functionality.
var _ = extended()
.register(require("_"))
.register(require("is-extended"))
.register(require("promise-extended"))
.register(require("declare.js"));
var Person = _.declare({
constructor: function(firstName, lastName){
this.firstName = firstName;
this.lastName = lastName;
}
});
var