5

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

CoffeeScript 是否允许上述任何一项?

4

4 回答 4

10

是的,您可以使用任何带有 coffescript 的 javascript 库,只需以通常的方式包含 lib 并以 coffeescript 的“样式”编写代码,因此对于 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

还有一本实用的程序员书籍,其中一章侧重于在咖啡脚本应用程序中使用 jquery 和骨干网

nb正如所指出的,请记住,coffeescript 'compiler' 不会检查函数是否存在,只会检查语法是否正确

于 2012-06-15T16:33:45.920 回答
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 网站上的“Try CoffeeScript”链接查看翻译是如何进行的并尝试运行它。您也可以在jsFiddle中通过将 Panels 选项更改为使用 CoffeeScript 而不是 JavaScript 来尝试它。

于 2012-06-15T17:05:54.400 回答
2

CoffeeScriptJavaScript。

或者更确切地说,CoffeeScript 的唯一目的是让编写 JavaScript 成为一种更轻松、“更干净”的体验。您编写的所有 CoffeeScript 代码都被编译成 Javascript。

CoffeeScript 编译器只检查代码的语法。它从不费心检查您引用的变量和函数是否确实存在(无论如何运行文件都是不可能的)。因此,您当然可以使用您的 CoffeeScript 代码调用“本机”JavaScript 函数,但这很简单,因为它们作为简单的 JavaScript 函数调用而出现。

于 2012-06-15T18:21:00.840 回答
0

您还可以在您的咖啡脚本中使用 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
于 2014-11-26T00:27:09.280 回答