Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
JavaScript
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
tests
.gitignore
.travis.yml
Makefile
README.md
index.js
nico.json
package.json

README.md

Arale

This is a fork of arale.class and arale.events. The core of arale projects.


Build Status

The Class and Events of Arale is very easy to use, and stable now. Test cases with 97% coverage, and you don't have to worry about the 3% left.

Installation

Install is easy with npm:

$ npm install arale

Class

Read it in Chinese at Arale.Class.

create

Class.create([parent], [properties]) create a new class:

/* pig.js */
var Class = require('arale').Class;

var Pig = Class.create({
    initialize: function(name) {
        this.name = name;
    },

    talk: function() {
        console.log('I am' + this.name);
    }
});

module.exports = Pig;

extend

Every class created by Class.create has an extend method:

/* red-pig.js */
var Pig = require('./pig');

var RedPig = Pig.extend({
    initialize: function(name) {
        RedPig.superclass.initialize.call(this, name);
    },

    color: 'red'
});

module.exports = RedPig;

implement

You can also mixin other classes:

/* flyable.js */
exports.fly = function() {
    console.log('I am flying');
};
/* flyable-red-pig.js */
var RedPig = require('./red-pig');
var Flyable = require('./flyable');

var FlyableRedPig = RedPig.extend({
    Implements: Flyable,

    initialize: function(name) {
        FlyableRedPig.superclass.initialize.call(this, name);
    }
});

module.exports = FlyableRedPig;

The other way of mixin:

/* flyable-red-pig-extension.js */
var FlyableRedPig = require('./flyable-red-pig');

FlyableRedPig.implement({
   swim: function() {
       console.log('I can swim');
   }
});

Class

Transfrom a function to class:

function Animal() {
}
Animal.prototype.talk = function() {};

var Dog = Class(Animal).extend({
    swim: function() {}
});

Events

Read it in Chinese at Arale.Events.

How to

There are two ways of implementing events:

var Events = require('arale').Events;

var object = new Events();
object.on('expand', function() {
    console.log('expanded');
});

object.trigger('expand');

The other way:

var Events = require('arale').Events;

function Dog() {
}
Events.mixTo(Dog);

Dog.prototype.sleep = function() {
    this.trigger('sleep');
};

var dog = new Dog();
dog.on('sleep', function() {
    console.log('the dog is sleeping');
});

dog.sleep();

on

object.on(event, callback, [context])

You can pass a context to change the this.

post.on('saved', callback, that);

There is an all event:

proxy.on('all', function(eventName) {
    object.trigger(eventName);
});

off

object.off([event], [callback], [context])

// remove the onChange callback of change event
object.off('change', onChange);

// remove all callbacks of change event
object.off('change');

// remove all onChange callbacks of every event
object.off(null, onChange);

// remove all events for the context
object.off(null, null, context);

// remove all events of the object
object.off();

trigger

object.trigger(event, [*args])

var obj = new Events();

obj.on('x y', fn);

// equals:
obj.on('x').on('y');
Something went wrong with that request. Please try again.