お知らせ
2009/06/17
Aelのバージョン0.4.0をリリースしました。0.3.1からの変更点は変更履歴を参照してください。
今回の主な変更点は拡張機能の追加です。組み込みオブジェクトの汚染と名前の衝突を回避しつつ、使用性を損なわないように考慮しました。詳細はエクステンションフレームワークとAPIリファレンスを参照してください。
0.4.0から手間を減らすため動作確認環境を少し減らしています(変更履歴で確認できます)。リクエストがあれば確認します。
Aelとは
JavaScriptによるプログラミングを支援するライブラリです。
大・中規模開発を前提に、必要となるだろう基幹機能を提供することを目的としており、互換性と使用性を考慮して作られています。
DOM機能やUI機能については他のライブラリを利用することを想定しており、独自には提供しません。
特徴
- 旧ブラウザ(IE4.01+)やその他の実行環境(Adobe AIR、Aptana Jaxer、Rhino、他)で動作
- 既存オブジェクトへの汚染が少ない
- インスタンスベースのクラスを手軽に利用できるクラスフレームワーク
- 変数の特性を利用してオブジェクトを疎に拡張するAelオブジェクト
- 多様な環境でユニットテストを可能にするテスティングフレームワーク
- 名前衝突を回避した拡張を可能にするエクステンションフレームワーク
例
・クラスフレームワークによるクラスの定義と利用。
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