AventadorJs

A JavaScript application modules organizer.

View project on GitHub

aventadorjs

Build Status

A JavaScript application modules organizer.

Version

0.0.5

Installation

via npm

$ npm install aventadorjs

via bower

$ bower install args-checker-js

Sample Application

See aventadorjs in action in this sample app.

Quick Usage

NOTE: dummy data were used just to show an example.

include aventador in your app.

<script src="aventadorjs/dist/aventador.min.js"></script>

app.js

(function(window, aventador) {
    "use strict";

    var myApp = aventador.module('myApp');

    myApp
        .utility('StringUtility', function() {
            return {
                isString: isString
            }

            function isString(str) {
                return typeof str === 'string';
            }
        })
        .factory('UsersFactory', function(StringUtility) { // Dependency Injection
            return {
                create: create
            }

            function create(user) {
                // some user creation here..
                if (StringUtility.isString(user.name)) {
                    return { id: 123, name: user.name};
                }

                return false;
            }
        })
        .service('UsersService', function(UsersFactory) {
            return {
                isLoggedIn: isLoggedIn,
                register: register
            }

            function isLoggedIn() {
                // some ajax request here..
                return false;
            }

            function register(user) {
                var user = UsersFactory.create(user);
                // some ajax request here..
                return user;
            }
        })
        .handler('UsersHandler', function (UsersService) {
            return {
                register: register
            }

            function register(user, callback) {
                if (!UsersService.isLoggedIn()) {
                    var user = UsersService.register(user);

                    if (callback) { callback(user) }

                    return user;
                }

                return false;
            }
        })

})(window, aventador);

Using with jQuery event handlers.

(function(window, $, aventador) {
    "use strict";

    // document ready
    $(function() {
        var myApp = aventador.module('myApp'), // your app module
            UsersHandler = myApp.getHandler('UsersHandler'); // your handler object

        $('form').on('submit', function(e) {
            var $this = $(this),
                data = $this.serialize();

            UsersHandler.register(data, function(user) {
                console.log(user); // Object {id: 123, name: "john"}
            })

            e.preventDefault();
        })
    })

})(window, jQuery, aventador);

Maintainers

License

(C) Karl Patrick Espiritu 2015, released under the MIT license