Coffee Script 是否允许使用 Javascript 库



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

CoffeeScript 是否允许上述任何一种行为?

是的,您可以将任何JavaScript库与coffescript一起使用,只需以通常的方式包含lib并以coffeescript"style"编写代码,因此对于jquery示例:

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

成为

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

快速的谷歌发现了一些关于这个主题的令人不安的博客,coffeescript和jquery很有趣,并将jquery与coffeescript一起使用。

还有一本实用的程序员书,其中一章重点介绍如何在coffeescript应用程序中使用jquery和backbone。

注意:正如所指出的,请记住,CoffeeScript'编译器'不会检查函数是否存在,只会检查语法是否正确

您可以使用 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 网站上的"试用 CoffeeScript"链接查看翻译是如何进行的并尝试运行它。您也可以在jsFiddle中尝试使用面板选项以使用CoffeeScript而不是JavaScript。

CoffeeScript JavaScript。

或者更准确地说,CoffeeScript 的唯一目的是让编写 JavaScript 成为一种更容易、"更干净"的体验。你编写的所有 CoffeeScript 代码都被编译成 Javascript。

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

你也可以在咖啡脚本中使用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

最新更新