Szukam biblioteki JavaScript, która pozwoli mi wykonywać zapytania dotyczące złożonych obiektów JSON przy użyciu składni podobnej do LINQ. Szybkie wyszukiwanie znalazło kilka obiecujących opcji, które wyglądały, że mogą oferować to, czego potrzebuję:
- Czy ktoś ma jakieś doświadczenie w ich używaniu?
- Jakie są zalety i wady?
- Czy wydajność jest porównywalna?
- Czy składnia przekazywania funkcji LINQ to JavaScript oferuje jakieś ukryte korzyści (osobiście uważam składnię jLinq za bardziej atrakcyjną na pierwszy rzut oka)?
- Czego brakuje w obu projektach?
- Czy kiedykolwiek próbowałeś skontaktować się z autorami? Jak reagowali?
- Jaki projekt jest szerzej stosowany?
Myślę, że będzie to pierwszy, który zostanie dokładnie wypróbowany.
javascript
json
linq
Tom Tresansky
źródło
źródło
filter
,map
orazreduce
funkcji tablicowych. Nowa składnia lambda sprawia, że kod wygląda bardziej podobnie do kodu LINQ.Linq-Collections
( npmjs.com/package/linq-collections ). Wykorzystuje odroczone wykonania i mnóstwo wewnętrznych optymalizacji, aby działać błyskawicznie. W oparciu o standard Microsoftu (jeśli znasz C # Linq, to znasz linq-collections)Odpowiedzi:
Czy widziałeś już Rx dla Javascript ? To jest to czego chcesz.
źródło
Może chcesz sprawdzić linq.js . Jest zgodny ze składnią lambda .NET i wygląda na dobrze zintegrowany ze środowiskiem Microsoft.
LINQ dla JavaScript - http://linqjs.codeplex.com/
Plusy
Cons
źródło
Najbardziej podstawowe i najczęściej używane operatory Linq są bardzo powszechnie definiowane w powszechnie używanych bibliotekach JS. Mają po prostu inne nazwy (w rzeczywistości mają bardziej tradycyjne nazwy niż w Linq).
Select
stajemap
,Where
staje sięfilter
,First
iFirstOrDefault
stać[0]
.Prawie żadna znana mi biblioteka (w tym myślę, że te, z którymi się łączyłeś) nie zadaje sobie trudu, aby implementacja była leniwa, jak w .NET Linq, po prostu oceniają natychmiast przy użyciu tablic.
Aby uzyskać bardzo ładny, kompletny zestaw operacji na liście funkcji, spróbuj: http://osteele.com/sources/javascript/functional/
źródło
a1.filter(function(e) { return a2.indexOf(e) == -1; })
Polecam przyjrzeć się underscore.js . Nie jest to bezpośredni port LINQ, jak niektóre inne, ale jest bardzo wygodnym doświadczeniem podobnym do LINQ. Obsługuje wszystkie potrzebne mi opcje filtrowania, sortowania i projektów oraz ma doskonałą dokumentację i wsparcie społeczności.
Jako bonus dla użytkowników Knockouta , istnieje UnderscoreKO, który dodaje metody tablicowe Underscore do obserwowalnych tablic Knockouta. Próbny
źródło
Osobiście znajduję operacje LINQ / set Union, Intersect, Except i Distinct na wyliczalnych w .NET. bardzo przydatne. Istnieje wtyczka jquery o nazwie jQuery Array Utilities, która zapewnia te metody do użycia w tablicach.
Przykłady kodu:
zwraca [1, 2, 3]
zwraca [1, 2, 3, 4, 5]
zwraca [2,3]
zwraca [1, 2]
źródło
$ linq: http://jscriptlinq.codeplex.com/
źródło
Istnieje kilka powielających się bibliotek, które próbują przenieść LINQ do JavaScript przy użyciu podobnej składni i nazw metod. Jednak w społeczności JS biblioteką, która staje się bardzo popularna i zapewnia tę samą funkcjonalność, jest Underscore.js .
źródło
Wypróbowałem większość z nich - i naprawdę lubię $ linq: http://jscriptlinq.codeplex.com/ the best. Po prostu działa tak, jak można by oczekiwać, że C # linq będzie działać - w tym zdolność łańcucha.
źródło
Sam czegoś takiego szukam i trafiłem na ...
http://www.hugoware.net/Projects/jLinq
To wygląda naprawdę świetnie! Może po prostu nie rozumiem sensu Rx i obserwałów w porównaniu do ustawiania programów obsługi zdarzeń przez coś takiego jak jQuery.
źródło
Niedawno stworzyłem bibliotekę LINQ dla JavaScript. Zaimplementował większość funkcji LINQ dostarczonych przez .NET i jest najszybszą ze wszystkich bibliotek LINQ.
http://fromjs.codeplex.com/
źródło