linq.js - Linq to Objects for JavaScript

14,705 views

Published on

LT - linq.js
http://linqjs.codeplex.com/

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,705
On SlideShare
0
From Embeds
0
Number of Embeds
9,971
Actions
Shares
0
Downloads
16
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

linq.js - Linq to Objects for JavaScript

  1. 1. linq.jsLinq to Objects for JavaScript @neuecc - 2011/08/20
  2. 2. Profile 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
  3. 3. linq.js
  4. 4. LINQ to Objectsfor JavaScript
  5. 5. Query SyntaxMethod Syntax
  6. 6. 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();
  7. 7. 完全に一致JSなのにメソッドをUpperCamelCaseにしてまで一致させたのは後悔してますが……
  8. 8. メソッド構文、すなわちjQueryなどでお馴染みのメソッドチェーンはJavaScriptのLanguageとしてINtegratedされているのでVSで書けばIntelliSenseが効いてQueryが書きやすい
  9. 9. jQueryあるし……?
  10. 10. 役割が違うjQueryはDOM操作linq.jsはコレクション操作RIAが叫ばれる昨今では、クライアントサイドでの処理も少なくない。データ処理が重要だが、素の状態のJavaScriptはコレクション操作があまりにも貧弱(forループしかない!←ES5からfilter,map,reduce,every,some,forEachは入りました)・冗長なDOM操作APIの苦痛を和らげるjQuery・貧弱なコレクション処理を補完するlinq.js互いに競合しない、むしろ協調動作する
  11. 11. Features #1 標準クエリ演算子の全てが使用可能  JoinだってDistinctだってThenByだって何でもある  挙動も完全再現してます(頑張った!)  当然、遅延評価だよ? 更に大量の謎拡張メソッドも  ForEachとかCascadeDepthFirstとか  UnfoldとかScanとかTakeExceptLastとか  現在のところ全90メソッド DOM依存がないのでNode.jsやWSHでも動く  WSH/JScriptの腐ったEnumeratorも殺害可能
  12. 12. Features #2 jQueryプラグイン/拡張バインディング  JavaScriptといったらDOM、DOMといったjQuery  TojQueryとtoEnumerableでシームレスに連携 簡易ラムダ記法  .Where(function(x){ return x % 2 == 0 })  長くてダルい  .Where("x => x % 2 == 0")  C#風のラムダ式を文字列渡しすることが可能、短い!  .Where("$ % 2 == 0")  デフォルトイテレータ変数で更に短く書ける
  13. 13. Features #3 IntelliSense完全サポート  vs-docもちゃんと完備してます
  14. 14. Features #4 Reactive Extensions for JavaScript(RxJS)との接続  JavaScriptはEnumerableとObservableが両方そなわり 最強に見える  まあ、C#のほうがいいですけどね:) LINQ to Everything, LINQ over the Language  RxJSはすっかり更新されてなくてアレゲだけど  更新待ってます  linq.jsも最後の更新が半年ぐらい前なのですけど  やるべきことは沢山たまっているのでやらないと……
  15. 15. 利用者の声 Linq for Javascript + JQUERY == BLISS! Its a totally bloody loop-buster!!! A real time saver for JS intensive apps. Cant 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. Ive been using it for months and I cant live without it.
  16. 16. まとめ 詳しくは@ITに記事を書いたので見てね  JavaScriptで配列をLINQにより処理できるライブラリ 「linq.js」を利用するには?  jQueryと「linq.js」を連携させてDOMをLINQにより 処理するには? ダウンロードはCodePlexから  http://linqjs.codeplex.com/ NuGetからも入れられます  linq.js, linq.js-jQuery, linq.js-Binding

×