Coffee Script允许使用Javascript库吗?

时间:2012-06-15 16:31:13

标签: javascript coffeescript

看起来Google的Dart语言不允许您调用本机js函数(例如,使用jQuery或我现有的.js代码)。

CoffeeScript是否允许以上任何一种?

4 个答案:

答案 0 :(得分:9)

是的,你可以使用任何带有coffescript的javascript库,只需按常规方式包含lib并用coffeescript'style'编写你的代码,所以对于一个jquery示例:

$(function () {
    $('.something').on('click', function () {
        console.log('you clicked me');
    });
});

变为

$ ->
    $(".button").on "click", ->
        console.log('you clicked me');

快速谷歌发现了一些关于这个问题的有趣博客,coffeescript & jquery funusing jquery with coffeescript

还有一个pragmantic programmer book章节专注于在coffeescript应用程序中使用jquery和backbone

n.b。指出,请记住,coffeescript'编译器'不会检查函数是否存在,只是语法正确

答案 1 :(得分:5)

您可以使用jQuery和本机JavaScript函数。您只需要使用正确的CoffeeScript语法编写它们。

请记住,CoffeeScript是源代码编译器的源代码。它将转换 CoffeeScript转换为JavaScript。它不知道是否存在任何指定的函数。

因此,如果您编写了这个CoffeeScript,它就可以正常编译:

words = ["hello", "world"]
alert word.touppercase() for word in words

请注意,touppercase()在JavaScript中未定义。它应该是toUpperCase()。尽管如此,CoffeeScript将输出:

var word, words, _i, _len;

words = ["hello", "world"];

for (_i = 0, _len = words.length; _i < _len; _i++) {
  word = words[_i];
  alert(word.touppercase());
}

一旦在浏览器中运行此错误,您将在JavaScript错误中遇到错误,而不是CoffeeScript错误。您可以使用CoffeeScript site上的“Try CoffeeScript”链接查看翻译的执行方式并尝试运行它。您也可以在jsFiddle中通过更改“面板”选项以使用CoffeeScript而不是JavaScript来尝试。

答案 2 :(得分:2)

CoffeeScript JavaScript。

或者更确切地说,CoffeeScript的唯一目的是使JavaScript编写更简单,更“清洁”的体验。您编写的所有CoffeeScript代码都编译为Javascript。

CoffeeScript编译器仅检查代码的语法。从来没有麻烦检查并查看您引用的变量和函数是否确实存在(无论如何,运行文件都无法做到这一点)。因此,您当然可以使用CoffeeScript代码调用“本机”JavaScript函数,但这很简单,因为它们作为简单的JavaScript函数调用而出现在另一端。

答案 3 :(得分:0)

您还可以在coffeescript中使用javascript。您所要做的就是使用后退:

hello = `function() {console.log("hello")}`

然而,几乎没有充分理由这样做。虽然有一种情况是有用的,并且在嵌套函数中重用相同的变量名。

例如:

parent = ->
  outer = 2

  changeOuter = ->
    `var outer`  ##scopes outer to changeOuter
    outer = 1

  changeOuter()

  return outer    ##returns 2 but would have returned 1
                  ##if we did not re-scope the varibale