Какова ведущая библиотека LINQ для JavaScript? [закрытый]
Я ищу библиотеку JavaScript, которая позволит мне запрашивать сложные объекты JSON с использованием синтаксиса LINQ-like. Быстрый поиск нашел пару перспективных вариантов, которые выглядят, они могут предложить то, что мне нужно:
- есть ли у кого-либо опыт
используя их? - какие плюсы и минусы?
- сопоставима ли производительность?
- тут синтаксис передачи функций
LINQ для JavaScript и предложить какие-то скрытые преимущества
(Я лично нахожу синтаксис
jLinq более привлекательным на первом
взгляд)? - что вы нашли не хватает
в любом проекте? - вы когда-нибудь пытались связаться с авторами? Насколько они были отзывчивы?
- какой проект более широко используется?
EDIT:
только что видел это сегодня:jslinq.
Я думаю, что это будет первый, чтобы получить тщательную пробу.
10 ответов:
видели Rx для Javascript, еще? Вот чего ты хочешь.
вы, возможно, захотите, чтобы проверить linq.js. Он следует синтаксису .NET lambda и, похоже, хорошо интегрирован в среду Microsoft.
LINQ для JavaScript -http://linqjs.codeplex.com/
плюсы
- реализует все методы .NET 4.0
- полная ленивая оценка
- полная поддержка IntelliSense для VisualStudio
- поддерживает jQuery
- Поддержка Windows Скрипт Хоста
- привязка для реактивных расширений для JavaScript (RxJS) и Intellisense Generator
- поддержка установки NuGet
- Обновлено недавно (последний релиз январь 2011)
- синтаксис соответствует синтаксису лямбды в C#
минусы
- linq.библиотека js немного большая.
- если вы уже используете jQuery или другую библиотеку js, наиболее часто используемая функциональность, вероятно, уже доступный. См., в частности в jQuery фильтр, и "любые" методы.
наиболее простые и часто используемые операторы Linq очень часто определяются в широко используемых библиотеках JS. Они просто имеют разные имена (на самом деле, они имеют более традиционные имена, чем в Linq).
Selectстановитсяmap,Whereстановитсяfilter,FirstиFirstOrDefaultстать[0].почти нет библиотеки, о которой я знаю (в том числе я думаю, что те, с которыми вы связаны), беспокоятся о том, чтобы сделать реализацию ленивой, как в .NET Linq, они просто оценивают сразу с помощью матрицы.
для очень хорошего, полного набора функциональных операций списка, попробуйте:http://osteele.com/sources/javascript/functional/
Я рекомендую взглянуть на подчеркивания.js. Это не прямой порт LINQ, как некоторые другие, но очень удобный "LINQ-подобный" опыт. Он поддерживает все параметры фильтрации, сортировки и проекта, которые мне нужны, и имеет отличную документацию и поддержку сообщества.
в качестве бонуса за офф пользователи, там UnderscoreKO это добавляет методы массива подчеркивания к наблюдаемым массивам нокаута. демо
Я лично считаю объединение операций LINQ/set, Intersect, Except и Distinct на перечисляемых в .NET. очень полезным. Существует плагин jquery под названием jQuery Array Utilities который предоставляет эти методы для использования на массивах.
примеры кода:
$.distinct([1, 2, 2, 3])возвращает [1,2,3]
$.union([1, 2, 2, 3], [2, 3, 4, 5, 5])возвращает [1,2,3,4,5]
$.instersect([1, 2, 2, 3], [2, 3, 4, 5, 5])возвращает [2,3]
$.except([1, 2, 2, 3], [3, 4, 5, 5])возвращает [1, 2]
$linq:http://jscriptlinq.codeplex.com/
var users = [{username: "asmith", domain: "north_america"}, {username: "tmcfarland", domain: "europe"}, {username: "cdeckard", domain: "nort_america"}]; var groups = [{user: "ASMITH", groupName: "base_users"}, {user: "TMCFARLAND", groupName: "admins"}, {user: "CDECKARD", groupName: "base_users"}, {user: "CDECKARD", groupName: "testers"}]; var results = $linq(users).join(groups, function (x) { return x.username; }, // key for 'users' "x => x.user", // key for 'groups' function (outer, inner) // function to generate results { return "user: " + outer.username + ", domain: " + outer.domain + ", group: " + inner.groupName; }, "(x, y) => x.toLowerCase() == y.toLowerCase()"); // compare keys case-insensitively
есть некоторые дублирующие библиотеки, которые пытаются перенести LINQ на JavaScript с аналогичным синтаксисом и именами методов. Однако в сообществе JS библиотека, которая становится действительно популярной и предоставляет ту же функциональность, является подчеркивания.js.
Я пробовал большинство из них -- и мне очень нравится $linq:http://jscriptlinq.codeplex.com/ лучший. Он просто работает так, как вы ожидаете, что c# linq будет работать, включая цепную способность.
Я сам искал что-то подобное и наткнулся...
http://www.hugoware.net/Projects/jLinq
Это выглядит действительно здорово! Может быть, я просто не понимаю смысла Rx и observables по сравнению с настройкой обработчиков событий через что-то вроде jQuery.
недавно я сделал библиотеку LINQ для JavaScript. Он реализовал большинство функций LINQ, предоставляемых .NET, и это самый быстрый из всех библиотек LINQ.
Comments