BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JSINQ、 LINQのJavaScript実装

JSINQ、 LINQのJavaScript実装

JSINQ(リンク)は、JavaScript INtegrated Queryを表し、LINQ to ObjectsをJavaScriptに実装するベータプロジェクトである。最近はKai Jager氏によってCodePlexで リリースされた。JSINQにはEnumerableおよびQueryの2つのモジュールがあり、それぞれSystem.Linq.Enumerable(リンク)およびSystem.Linq.Queryable(リンク)を実装している。配列、DOMノードリストまたは他のオブジェクト上での列挙を可能にする。

2つのモジュールはjsinq.Enumerableおよびjsinq.Queryである。クエリーの例は以下のとおりである。

var query = new jsinq.Query('\
    from order in $1 \
    group order by order.customerId into g \
    select {customerId: g.getKey(), items: g.sum(function(g) { return g.items; })} \
    into h \
    join customer in $0 on h.customerId equals customer.id \
    where h.items > 10 \
    orderby h.items descending \
    select {lastname: customer.lastname, items: h.items} \
');
query.setValue(0, customers);
query.setValue(1, orders);
var result = query.execute();

列挙の例は以下のとおりである。

var enumerator = namesThatStartWithAnA.getEnumerator();
while (enumerator.moveNext()) {
	var name = enumerator.current();
	document.write(name + '
');
}

Kai氏によると、JSINQは以下のことができる。

  • JavaScript配列、DOMノードリストまたは独自の列挙タイプに対し、任意で複雑なクエリーを記述する。
  • SQLのようなクエリーを使用して、HTML DOMツリーでエレメントを探す。
  • 宣言的な方法でXMLHttpRequestを通じで受信した JSONから、動的にHTMLエレメントを作成する。
  • XMLを研究し、何か別のものに変化させる。
  • 面白いやり方ですでに使用しているJavaScript-/Ajaxフレームワークとそれを結合する。
  • 宣言型プログラミングの機能を利用することで、記述するコードが少なくなる。
  • また、レイトレーサー(リンク)、モナドパーサー結合子(リンク)などを記述する。

Kai氏は、誰でもJSINQをテストできるようにとWebページ(リンク)を設置した。ソースコード(リンク)は、MITライセンス(リンク)下でCodePlexから無償でダウンロードすることができる。他の同様のプロジェクトには、JSLINQ(リンク)およびJLINQ(リンク)がある。

 

原文はこちらです:http://www.infoq.com/news/2009/02/JSINQ-JavaScript-LINQ

この記事に星をつける

おすすめ度
スタイル

BT