2

刚开始探索 Meteor,马上我就有了一些让我陷入困境的东西:

1)我安装并运行meteor add coffeescript

2) 我将 myapp.js 文件转换为 .coffee。

3)我保存了文件。

此时,Meteor 通过编译 coffeescript 文件生成一个新的 myapp.js 文件。好吧,这似乎合乎逻辑。

4)我跑了meteor。我在 处看到该应用程序localhost:3000,但是如果我按下按钮,则按钮单击事件会触发两次:一次来自myapp.js,一次来自myapp.coffee

只是为了看一个测试,我添加了这个:

Template.hello.events "click input": ->
  # template data, if any, is available in 'this'
  console.log "You pressed the button"  if typeof console isnt "undefined"
  $('body').append('<div>test</div>')

当我单击按钮时,添加了两个 div。

现在,如果我删除编译的myapp.js文件,“你按下按钮”只会触发一次,并且只有一个 div 附加到页面。但是,如果我保存 .coffee 文件,每次都会生成一个新的 .js 文件,现在所有 JS 都会执行两次。

您应该如何将 CoffeeScript 与 Meteor 一起使用,以便您的代码只执行一次?

4

3 回答 3

2

当我使用商业文本编辑器 webstorm 时,我会选择是否让 filewatcher 从 coffeescript 自动生成 js。如果它自动生成,那是你的编辑器在生成 js,但流星认为它应该寻找 js 或咖啡。

简而言之,可能从您的咖啡脚本项目的文本编辑器中删除文件观察程序/咖啡转换器。或者,从流星中删除 coffeescript 包。不是都

于 2013-09-17T03:33:41.120 回答
0

如果您myapp.js确定另一个是从名为myapp.js

coffeescript 编译的 js 文件应该是myapp.coffee.js(你只能在 chrome 的 web 检查器中看到)。

您也不应该在项目目录中看到这些已编译的 js 文件,如果它们在您保存.coffee其他人时确实出现在那里,它们是流氓文件,可能来自您的代码 ide?

Meteor 确实将咖啡脚本编译成 js,但它是在隐藏.meteor目录的临时目录中进行的。如果您使用的是咖啡脚本,流星希望体验就像是 javascript,这样您就不会注意到任何额外的文件。

于 2013-09-17T05:48:23.060 回答
0

因此,我运行了meteor remove coffeescriptand meteor add coffeescript,现在它按预期工作,没有重复文件。有点奇怪,但至少它有效!

于 2013-09-19T02:29:44.913 回答