Какова ведущая библиотека LINQ для JavaScript? [закрытый]



Я ищу библиотеку JavaScript, которая позволит мне запрашивать сложные объекты JSON с использованием синтаксиса LINQ-like. Быстрый поиск нашел пару перспективных вариантов, которые выглядят, они могут предложить то, что мне нужно:



LINQ to JavaScript и jLinq




  • есть ли у кого-либо опыт
    используя их?

  • какие плюсы и минусы?

  • сопоставима ли производительность?

  • тут синтаксис передачи функций
    LINQ для JavaScript и предложить какие-то скрытые преимущества
    (Я лично нахожу синтаксис
    jLinq более привлекательным на первом
    взгляд)?

  • что вы нашли не хватает
    в любом проекте?

  • вы когда-нибудь пытались связаться с авторами? Насколько они были отзывчивы?

  • какой проект более широко используется?


EDIT:



только что видел это сегодня:jslinq.



Я думаю, что это будет первый, чтобы получить тщательную пробу.

617   10  

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.

http://fromjs.codeplex.com/

Comments

    Ничего не найдено.