看起来Google的Dart语言不允许您调用本机js函数(例如,使用jQuery或我现有的.js代码)。
CoffeeScript是否允许以上任何一种?
答案 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 fun和using 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