Upload
yoshifumi-kawai
View
10.714
Download
1
Embed Size (px)
DESCRIPTION
LT - linq.jshttp://linqjs.codeplex.com/
Citation preview
linq.js
Linq to Objects for JavaScript
@neuecc - 2011/08/20
Twitter : @neuecc
HN : neuecc ("のいえ"と読ませています)
Microsoft MVP for C# LINQ
Blog : http://neue.cc/
LINQとかReactive Extensions(Rx)のことがメイン
CodePlexに色々ライブラリ公開しています
単体テスト用拡張メソッド : Chaining Assertion
dynamicを活用したJSONライブラリ : DynamicJson
生SQL文ベースのDB用ヘルパー : DbExecutor
Profile
linq.js
LINQ to Objects
for JavaScript
Query Syntax
Method Syntax
C# Enumerable.Range(1, 10) .Where(x => x % 2 == 0) .Select(x => x * x) .ToArray();
JavaScript(linq.js) Enumerable.Range(1, 10) .Where(function (x) { return x % 2 == 0 }) .Select(function (x) { return x * x }) .ToArray();
完全に一致 JSなのにメソッドをUpperCamelCaseにしてまで一致させたのは後悔してますが……
メソッド構文、すなわち
jQueryなどでお馴染みの
メソッドチェーンは
JavaScriptのLanguageとして
INtegratedされているので
VSで書けばIntelliSenseが効いてQueryが書きやすい
jQueryあるし……?
役割が違う
jQueryはDOM操作
linq.jsはコレクション操作
RIAが叫ばれる昨今では、クライアントサイドでの処理も少なくない。データ処理が重要だが、素の状態のJavaScriptはコレクション操作があまりにも貧弱(forループしかない!←ES5からfilter,map,reduce,every,some,forEachは入りました)
・冗長なDOM操作APIの苦痛を和らげるjQuery
・貧弱なコレクション処理を補完するlinq.js
互いに競合しない、むしろ協調動作する
標準クエリ演算子の全てが使用可能
JoinだってDistinctだってThenByだって何でもある
挙動も完全再現してます(頑張った!)
当然、遅延評価だよ?
更に大量の謎拡張メソッドも
ForEachとかCascadeDepthFirstとか
UnfoldとかScanとかTakeExceptLastとか
現在のところ全90メソッド
DOM依存がないのでNode.jsやWSHでも動く
WSH/JScriptの腐ったEnumeratorも殺害可能
Features #1
jQueryプラグイン/拡張バインディング
JavaScriptといったらDOM、DOMといったjQuery
TojQueryとtoEnumerableでシームレスに連携
簡易ラムダ記法
.Where(function(x){ return x % 2 == 0 })
長くてダルい
.Where("x => x % 2 == 0")
C#風のラムダ式を文字列渡しすることが可能、短い!
.Where("$ % 2 == 0")
デフォルトイテレータ変数で更に短く書ける
Features #2
IntelliSense完全サポート
vs-docもちゃんと完備してます
Features #3
Reactive Extensions for JavaScript(RxJS)との接続
JavaScriptはEnumerableとObservableが両方そなわり最強に見える
まあ、C#のほうがいいですけどね:)
LINQ to Everything, LINQ over the Language
RxJSはすっかり更新されてなくてアレゲだけど
更新待ってます
linq.jsも最後の更新が半年ぐらい前なのですけど
やるべきことは沢山たまっているのでやらないと……
Features #4
Linq for Javascript + JQUERY == BLISS!
It's a totally bloody loop-buster!!!
A real time saver for JS intensive apps.
Can't even imagine writing JavaScript without this
library, linq.js together with jQuery makes life lot
easier;)
This library is an absolute requirement when doing
any JS coding - webpages, mongodb, node.js etc.
I've been using it for months and I can't live
without it.
利用者の声
詳しくは@ITに記事を書いたので見てね
JavaScriptで配列をLINQにより処理できるライブラリ「linq.js」を利用するには?
jQueryと「linq.js」を連携させてDOMをLINQにより処理するには?
ダウンロードはCodePlexから
http://linqjs.codeplex.com/
NuGetからも入れられます
linq.js, linq.js-jQuery, linq.js-Binding
まとめ