看起来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