jFlow Framework, is a model framework for node.js and in the browser. It provides a common component structure for maintainable and reusable code with asynchronous flow control. Some key features include:
- Any number of asynchronous functions can be grouped / organised without the need for callbacks.
- A flow-enabled function can simplify asynchronous routines and be easily reusable.
- Components contain a reusable structure provided in traditional object oriented programming such as static, public and private members.
- Extendable component structures (inheritance).
- Each component instance returns a unique object, i.e there is no need to use the "new" keyword.
Complete documentation can be found here
Documentation
Complete documentation can be found here
Complete documentation can be found here
Installation
For node.js
npm install jflow-framework;
For Browser, download here and copy jflow-framework.js
to
your server's desired path
Usage
For node.js
require("jflow-framework");
For the browser, in the HTML header or body footer:
<script src="..pathto/jflow-framework.js"></script>
By default, the jFlow instance is global
Basic Asynchronous Example
jflow.pause( this,
function( flow ){
console.log("I'm first");
// start a wait event
flow.wait();
// asynchronous call
setTimeout(function(){
console.log("I'm second");
// account for the wait event
flow.continue();
}, 200);
},
function( flow ) {
console.log("I'm third");
}
);
The console will write:
I'm first
I'm second
I'm third
Component Example
// define a component
var Foo = function(jflow) {
// define private variable
var cantTouchThis = true;
// component definition
return {
// runs when component is initalized
init: function( value ){
// assign public property [value] of given instance
this.value = value;
console.log( "i ran when initalized, i was passed a value of ["+value+"]");
},
// component method
do : function() {
console.log("I have a value of ["+this.value+"]");
}
};
};
// create static properties
// Static definition
Foo.Static = function(jflow) {
//// object containing the properties you want to assign as static
return{
// Static member
iamStatic: function(){
console.log("no instance, just Static");
}
};
};
// add component to the framework
jflow.addComponent("Foo", Foo);
// run this when jFlow framework is ready
jflow.ready( function( jflow ){
// create instance
var foo = jflow.Foo( "bar" );
// console writes : `i ran when initalized, i was passed a value of [bar]`
foo.do();
// console writes : `I have a value of [bar]`
// this "Foo" is the installed component, not the instance "foo"
jflow.Foo.iamStatic();
// console writes : `no instance, just Static`
console.log( foo.cantTouchThis );
// console writes : undefined
});