将jQuery移植到CoffeeScript?

时间:2011-06-13 06:54:03

标签: jquery porting coffeescript

CoffeeScript似乎是一项很有前途的新技术,我肯定会在下一个项目中试一试。

似乎jQuery可以很容易地与CoffeeScript一起使用 - 但是将jQuery完全移植到CoffeeScript(以同样的方式移植underscore)是否有意义,或者它只是浪费时间?

  • 从这样的港口可以享受哪些优势?
  • 除了可能的兼容性问题之外 - 这是否也会导致问题(即可能在jQuery的纯js中使用的技巧,这在CoffeeScript中是不可能的?)

4 个答案:

答案 0 :(得分:9)

Underscore只是为了演示CoffeeScript的强大功能和简洁性。此外,带注释的CoffeeScript源为CoffeeScript中的熟悉者提供了更清晰的文档。但是official version仍然在纯JS中维护,而不是从CoffeeScript编译。

我认为,类似地,将jQuery移植到CoffeeScript是有意义的,以便好奇的编码器可以享受带注释的源代码,这将使库的内部工作更清晰。 jQuery受益于足够强大的JavaScript程序员的注意力,我怀疑将其移植到CoffeeScript会有什么改进。

我很乐意看到有人这样做,假设他们制作了具有相同行为的漂亮代码。我认为适配器必须仔细考虑的一件事是如何将命名函数(function foo())移植到未命名函数(foo = function()),因为CoffeeScript仅支持后者(由于跨浏览器的不一致性)有些情况下)两者有不同的范围行为。 JavaScript的==应该不是问题,因为我发现它在jQuery源代码中使用的唯一情况是x != null,可以使用x?在CoffeeScript中完成。

答案 1 :(得分:5)

更正Coffeescript是一个Javascript生成器。同样正确的源代码可以更清楚。绝对没有可以在js中完成无法在Coffeescript中完成的技巧 - 如果你需要,你可以放入纯粹的js - 而且我不确定我是否听说过有人需要这样做。如果你想进入Javascript,只需将表达式括在反引号中:

`var foo = 42`

我不同意代码是“更大”。我会断言代码中的大多数额外字节是你应该插入的但无论如何都没有 - 就像在你自己的代码周围添加命名空间包装一样。在某些情况下,Coffeescript拥有聪明的帮助器,可以分解常见的使用模式,因此它们不会被一次性编码。你可以通过读取生成的js来弄清楚这些是什么。

就优势而言,我认为这很大程度上取决于您对代码的看法。我喜欢在类中封装一个功能块并且讨厌基于Javascript原型的对象定义。 Coffeescript在声明类和继承方面更像Rubyish或Pythonesque。

我给你的建议是:1)获取Trevor Burnham's Coffeescript book并了解Coffeescript在实践中的运作方式; 2)拼凑一些简单的例子来解决你的用例; 3)熟悉语法后,看看你喜欢它。

注意:Coffeescript Google Group是一个很好的资源,人们可以快速回答问题 - 很可能有人遇到过令你困惑的事情并且会分享答案。特雷弗在他的书中列出了一整套资源。 (不,我没有得到报酬给他道具:)

答案 2 :(得分:2)

考虑到coffescript只是编写javascript代码的另一种方式,所以你在javascript中可以做的一切都可以在coffescript中完成,反之亦然...

很明显,coffescript的唯一优势是更清晰的源代码,更容易阅读和编码。缺点是coffescript生成的javascript最可能会比当前大得多..图书馆的内容是一个相当大的问题......

因此,有一个coffescript版本作为文档文档对于试图理解jQuery如何工作的人来说会很有趣但是在主代码中使用coffescript会有什么不同

答案 3 :(得分:1)

我知道我迟到了两年但是我把jQuery移植到CoffeeScript。该代码旨在用于比较目的(jQuery的.js代码与.coffee代码),因为我没有专注于添加注释。

查看http://github.com/sharikul/jQuery-Coffee