【问题标题】:How should one go about using both JavaScript and CoffeeScript in a Spine Application?应该如何在 Spine 应用程序中同时使用 JavaScript 和 CoffeeScript?
【发布时间】:2012-02-13 18:37:24
【问题描述】:

我现在正在研究 Spine、Hem、CoffeeScript 等,努力构建一个基于浏览器的应用程序。我想在应用程序中使用一个 JavaScript 图形库,我很确定它不是用 CoffeeScript 编写的(这有关系吗?),所以我想知道如何在我的应用程序中混合 CoffeeScript 和 JavaScript应用程序...只是将两者混合并让 Hem(这实际上是触发 CoffeeScript 编译为 JavaScript 的原因,对吗?)在从 CoffeeScript 编译为 JavaScript 的过程中解决问题是否简单?还是在混入 JavaScript 时需要在 CoffeeScript 中使用特殊标签?

我已经在谷歌上搜索了一些这样的例子,但无济于事......请指教。

【问题讨论】:

  • 只需弄清楚如何编写可编译为与您的第三方 API 正确对话的 javascript 的咖啡脚本。这涉及实际理解coffeescript 和javascript 之间的同构。如果你知道 javascript 这很简单
  • Raynos,感谢您的评论。它实际上让我重新思考了我在谷歌上搜索相关信息的方式,然后我找到了一些例子。
  • 你也可以使用js2coffee来查看coffeescript中的有效javascript是什么样的

标签: javascript coffeescript spine.js


【解决方案1】:

应该没有问题。 Coffeescript 编译为 JavaScript(并且以一种更直接的方式,比如 GWT)。浏览器将看到的只是 JavaScript。

您可以只从 Coffeescript 调用 Javascript,反之亦然。

不要在一个文件中混合使用相同的文件(有一些 .coffee 和一些 .js 文件)。

确保您了解 Coffeescript 如何(默认情况下)编译成封装在其自身作用域中的模块,以及如何在需要时从中导出符号。

我想在应用程序中使用一个 JavaScript 图形库,我很确定它不是用 CoffeeScript 编写的(这有关系吗?)

不,一点都不重要。您可以像从其他 JavaScript 中一样轻松地从 CoffeeScript 调用该库。

在从 CoffeeScript 编译到 JavaScript 的过程中搞清楚?

当你编译 CoffeeScript 时,它不会检查它调用的函数是否存在(这发生在运行时)。所以编译器只看 .coffee 文件,不需要关心你项目中的其他文件。

【讨论】:

  • 是的。 CoffeeScript 是为开发者准备的,浏览器并不知道你在使用它。引用咖啡脚本网站:CoffeeScript 的黄金法则是:“它只是 JavaScript”。代码一对一编译成等价的JS,运行时没有解释。您可以从 CoffeeScript 无缝使用任何现有的 JavaScript 库(反之亦然)。
  • 这句话是一回事,实践是另一回事。在 Rails 中,我不能将 JS 与 CoffeeScript 混合使用,因为我知道:stackoverflow.com/a/9011182/504845 有很多答案告诉我不应该混合使用 JS 和 CS。我不明白。
  • @DamianNowak:你不应该将 JS 和 CS混在同一个文件中。此外,像 Rails 这样的构建工具可能对使用 CS 或混合使用 CS 的支持有限,但这不是 Coffeescript 本身的问题。通常,您希望将所有代码都写在 Coffeescript 中,而 JS 将用于第三方或遗留库代码(两者通常可以作为单独的文件包含)。
【解决方案2】:

当你想插入 js 到 cs 时,首先使用 unquote "`" 来包装你的 js 代码,像这样:

`var ajax=new Ajax();`
do ajax.send 

但这不是一个好习惯。

秒: 有很多库可以让你只写.coffee,但服务.js 文件供客户使用。继续https://github.com/jashkenas/coffee-script/wiki/Build-tools 找出答案。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2016-03-12
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多