【发布时间】:2012-02-24 01:52:49
【问题描述】:
我是一个软件开发团队的架构师。我使用 ASP.NET 和 JavaScript/jQuery 为我们构建了一个相当大的 Web 控件和工具库。
该工具包的一部分功能等效于 .NET 的 JavaScript 数组的 IEnumerable LINQ 方法(where、select 等)。我很惊讶使用 js 原型特性来实现这些是多么简单。我希望我们的开发人员可以在客户端无缝地利用他们对 LINQ 的了解,并且到目前为止效果很好。
正如我今天发现的那样,只有一个障碍:从 JavaScript 1.6 开始,已经有一些功能相同的方法。它们是filter、map、some和every,分别对应LINQ的where、select、any和all方法。
IE8 或更早版本不支持它们(这可能解释了为什么我没有听说过它们),但是提供一个实现以便它们跨浏览器工作是微不足道的。请注意,有许多 LINQ 方法没有本地等效方法,例如 sum、max、avg、groupBy 等。
我的问题是:我的开发团队应该如何解决这种差异?我认为我们有三个选择:
1 - 忽略原生 JavaScript 方法(或在传递方法内部使用它们)并仅使用 LINQ 方法。禁止使用本机方法,以便我们的代码库是自洽的。
2 - 在适用时使用本机 JavaScript 方法,在没有等效方法时使用 LINQ 方法。
3 - 允许使用任何一个。
我认为大多数社区都会支持选项 2,因为它可以说更符合标准,但我觉得开发人员必须知道 JavaScript 中的某些功能是相同的,而另一些功能是相同的,这会让开发人员迷失方向。一个不同的、任意的名字。它确实提升了我们迄今为止实现的跨平台一致性。
您会选择其中的哪一个,为什么?还有其他我没有考虑的选择吗?
额外问题:jQuery 既没有原生函数也没有 LINQ 函数。我的 jQuery 扩展应该使用什么方法名?
【问题讨论】:
标签: javascript linq web-standards