お知らせ

2009/06/17

Aelのバージョン0.4.0をリリースしました。0.3.1からの変更点は変更履歴を参照してください。

今回の主な変更点は拡張機能の追加です。組み込みオブジェクトの汚染と名前の衝突を回避しつつ、使用性を損なわないように考慮しました。詳細はエクステンションフレームワークAPIリファレンスを参照してください。

0.4.0から手間を減らすため動作確認環境を少し減らしています(変更履歴で確認できます)。リクエストがあれば確認します。


Aelとは

JavaScriptによるプログラミングを支援するライブラリです。
大・中規模開発を前提に、必要となるだろう基幹機能を提供することを目的としており、互換性と使用性を考慮して作られています。
DOM機能やUI機能については他のライブラリを利用することを想定しており、独自には提供しません。

特徴

・クラスフレームワークによるクラスの定義と利用。

Ael.package_("sample").class_("Counter", {
    "instance num" : 0,
    
    "ael prototype increment" : function(){
        this.val().num++;
    }
});

var counter = new Ael.sample.Counter();	// 0
counter.increment();			// 1
Ael(counter).increment();		// 2
alert(counter.num);			// 「2」と表示される

・Aelオブジェクトを使ったJSONオブジェクトの操作。

Ael.package_("sample").class_({name: "Counter", aliases: ["Ael.sample.Counter"]}, {
    "ael increment" : function(){
        this.val().num++;
    }
});

var json = {
    num : 0,
    constructor : "Ael.sample.Counter"
};

Ael(json)				// Ael.sample.Counterの振る舞いを持つAelオブジェクトを生成。
    .increment();		// 1
alert(json.num);		// 「1」と表示される

・テスティングフレームワークによるユニットテスト。

Ael.test({
    "testcase1": function(){
        this.assertEquals(1, 1, "message1");
    },
    "testcase2": function(){
        this.assertEquals(2, 2, "message2");
    }
})
.run();

・エクステンションフレームワークによる拡張。

// エクステンションをAelにインストールする
Ael.extend().install({
	id: "sample.string",
	fn: function(Ael){

		// Stringクラスに文字数を返すメソッドを追加する
		Ael(Ael.lang.String).properties({
			"ael size": function(){
				return this.val().length;
			}
		});

	}
});

// 簡易名前空間(=Aelの複製)を作成する。
var Ns = Ael.namespace();

// Nsをsample.stringエクステンションで拡張する。
Ns.extend("sample.string");

// 拡張したメソッドを呼び出す。
Ns("12345").size();		// 5