刚开始探索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,所以你的代码只执行一次?
答案 0 :(得分:2)
当我使用webstorm,一个商业文本编辑器时,我选择让filewatcher自动生成来自coffeescript的js。如果它是自动生成的,那么你的编辑器会生成js,但是流星认为应该寻找js或者咖啡。
简而言之,可能会从文本编辑器中删除文件监视器/咖啡转换器以获取coffeescript项目。或者,从流星中删除coffeescript包。不是两个
答案 1 :(得分:0)
如果您确定从名为myapp.js
myapp.js
coffeescript编译的js文件应为myapp.coffee.js
(您只能在chrome的Web检查器中看到)。
你也应该没有在你的项目目录中看到这些已编译的js文件,如果他们在你保存.coffee
时就来了,那么他们就是你的流氓文件,也许来自你的代码ide?。
Meteor确实将coffeescript编译成js,但是在隐藏的.meteor
目录中的临时目录中。如果你正在使用coffeescript meteor,那么这种体验就好像它是javascript所以你不会注意到任何额外的文件。
答案 2 :(得分:0)
所以,我运行了meteor remove coffeescript
和meteor add coffeescript
,现在它按预期工作,没有重复文件。有点奇怪,但至少它正在发挥作用!