What is BothIO?
Simple, it's a library based on the CQS-Princip, where your methods are separated by commands and queries.
What BothIO makes so special is the NodeJS/Client-Support, so you can execute your commands and queries from your node-side as well as from your client-side.
Install
$ npm install both.io
Example
var myToDoList = [];
// # Define a Command
// Server:
both.command('CreateTodo', function(name, payload, callback){
myToDoList.push(payload.todoName);
});
// Execute a Command
// Client:
both('CreateTodo', {
todoName: 'eat some chocolate'
});
// Listen to a defined Command
// Server:
both.on('CreateTodo', function(name, payload){
console.log('Todo Created:', payload.todoName);
});
// Listen to all Commands
// Client:
both.on(function(commandName, payload){
console.log('The command', commandName, 'was executed!');
console.log('with the payload:', payload);
});
// # Add a Callback
// Server:
both.query('GetAllTodos', function(name, payload, callback){
someDatabase.query('getAllTodos', function(todos){
callback(todos);
});
});
// Client:
both('GetAllTodos', {}, function(todos){
// Use Todos at the client
})
And there's something more planed
Battle-Tested
This project is used at the entertain.io platform.
Contribute
BothIO uses the new ES6 standard and is tested with mocha, plus we package the code with webpack.
You want contribute? Here is how you start:
Clone repo
git clone git@github.com:michaelzoidl/both.io.git
Run the unit-tests
npm run test
Pack the code and save it in the dist-folder
npm run pack
Develop, it starts a mocha-watcher
npm run develop