Estoy buscando una biblioteca de JavaScript que me permita consultar objetos JSON complejos utilizando una sintaxis similar a LINQ. Una búsqueda rápida encontró un par de opciones prometedoras que parecen ofrecer lo que necesito:
- ¿Alguien tiene alguna experiencia usándolos?
- ¿Cuáles son algunos pros y contras?
- ¿Es comparable el rendimiento?
- ¿La sintaxis de transferencia de funciones de LINQ to JavaScript ofrece algún beneficio oculto (personalmente, encuentro la sintaxis de jLinq más atractiva a primera vista)?
- ¿Qué le ha faltado a ambos proyectos?
- ¿Intentó alguna vez ponerse en contacto con los autores? ¿Qué tan receptivos fueron?
- ¿Qué proyecto se utiliza más?
Creo que será el primero en hacer una prueba completa.
javascript
json
linq
Tom Tresansky
fuente
fuente
filter
,map
yreduce
funciones de matriz. La nueva sintaxis lambda ayuda a que el código se vea mucho más similar al código LINQ.Linq-Collections
( npmjs.com/package/linq-collections ). Utiliza ejecuciones diferidas y toneladas de optimizaciones internas para ser increíblemente rápido. Basado en el estándar de Microsoft (si conoce C # Linq, entonces conoce linq-collections)Respuestas:
¿Ha visto Rx para Javascript , todavía? Eso es lo que quieres.
fuente
Es posible que desee echa un vistazo a linq.js . Sigue la sintaxis lambda de .NET y parece estar bien integrado en un entorno de Microsoft.
LINQ para JavaScript: http://linqjs.codeplex.com/
Pros
Contras
fuente
Los operadores Linq más básicos y de uso frecuente se definen con mucha frecuencia en bibliotecas JS ampliamente utilizadas. Simplemente tienen nombres diferentes (de hecho, tienen nombres más tradicionales que en Linq).
Select
se vuelvemap
,Where
vuelvefilter
,First
yFirstOrDefault
convertido[0]
.Casi ninguna biblioteca que conozca (incluidas las que creo que vinculó) se molestan en hacer que la implementación sea lenta como en .NET Linq, simplemente evalúan inmediatamente usando matrices.
Para obtener un conjunto completo y muy agradable de operaciones de lista funcional, pruebe: http://osteele.com/sources/javascript/functional/
fuente
a1.filter(function(e) { return a2.indexOf(e) == -1; })
Recomiendo echar un vistazo a underscore.js . No es un puerto LINQ directo como algunos de los otros, pero es una experiencia muy cómoda "similar a LINQ". Es compatible con todas las opciones de filtrado, clasificación y proyecto que necesito y tiene una excelente documentación y soporte de la comunidad.
Como beneficio adicional para los usuarios de Knockout , existe UnderscoreKO que agrega los métodos de matriz de Underscore a las matrices observables de Knockout. Manifestación
fuente
Personalmente, encuentro las operaciones LINQ / set Union, Intersect, Except y Distinct en enumerables en .NET. muy útil. Existe un complemento de jquery llamado jQuery Array Utilities que proporciona estos métodos para su uso en matrices.
Ejemplos de código:
devuelve [1,2,3]
devuelve [1,2,3,4,5]
devuelve [2,3]
devuelve [1, 2]
fuente
$ linq: http://jscriptlinq.codeplex.com/
fuente
Existen algunas bibliotecas duplicadas que intentan portar LINQ a JavaScript con una sintaxis y nombres de métodos similares. Sin embargo, en la comunidad JS, la biblioteca que se está volviendo realmente popular y que proporciona la misma funcionalidad es Underscore.js .
fuente
Probé la mayoría de estos, y realmente me gusta $ linq: http://jscriptlinq.codeplex.com/ el mejor. Simplemente funciona de la manera que esperaría que funcionara c # linq, incluida la capacidad de cadena.
fuente
Estoy buscando algo como esto yo mismo y encontré ...
http://www.hugoware.net/Projects/jLinq
¡Esto se ve realmente genial! Tal vez simplemente no entiendo el punto de Rx y observables en comparación con la configuración de controladores de eventos a través de algo como jQuery.
fuente
Recientemente hice una biblioteca LINQ para JavaScript. Implementó la mayoría de las funciones LINQ proporcionadas por .NET y es la más rápida de todas las bibliotecas LINQ.
http://fromjs.codeplex.com/
fuente