看起来 Google 的 Dart 语言不允许您调用本机 js 函数(例如,使用 jQuery 或我现有的 .js 代码)。
CoffeeScript 是否允许上述任何一项?
看起来 Google 的 Dart 语言不允许您调用本机 js 函数(例如,使用 jQuery 或我现有的 .js 代码)。
CoffeeScript 是否允许上述任何一项?
是的,您可以使用任何带有 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 fun和using jquery with coffeescript。
还有一本实用的程序员书籍,其中一章侧重于在咖啡脚本应用程序中使用 jquery 和骨干网
nb正如所指出的,请记住,coffeescript 'compiler' 不会检查函数是否存在,只会检查语法是否正确
您可以使用 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 来尝试它。
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