我刚刚开始使用Meteor,并遇到了一些不一定是问题但我不理解的事情。我在名为chat.coffee
...
Meteor.setInterval ( ->
console.log "Hello " + roomName
Meteor.call('keepAlive', Meteor.user(), roomName)
return
), 5000
我最初认为咖啡脚本文件仅在其关联的html文件上运行。这似乎不是这种情况,因为无论文件名如何,此代码都在每个页面上运行。这是事情应该起作用的预期方式,如果是这样,是否有办法强制只在某些页面上运行某些代码。
有一点需要注意的是,此代码在客户端文件夹中运行。
答案 0 :(得分:2)
正确。
Meteor合并你所有的javascript(通过coffeescript)和所有的html,它以自己特殊的方式存储。它将头部和主体等中的所有html合并到一个页面中并提供它,然后它将按照您的指定呈现模板。
要拥有一个更“面向页面”的应用程序,您可以使用类似铁路由器的东西。
答案 1 :(得分:2)
在客户端,Meteor会根据共享的模板名称将您的模板与其javascript函数和帮助器相关联,但这并非与您的文件名相关联。
举例来说,如果你在html文件中有一个名为“chat”的模板,如下所示:
<template name="chat"></template>
Meteor仅在与“聊天”模板相关的情况下运行Template.chat.helpers({})
或Template.chat.events({})
等脚本。但这不取决于您的文件命名约定。它可以放在文件名chat.js中用于组织和约定,但同样可以驻留在名为client.js的文件或任何其他任意命名的.js文件中。
同样,您的<template name="chat">
可以驻留在名为chat.html或client.html的文件中,也可以位于您选择的任意名称中。
您的setInterval函数未绑定到特定模板,因此它将在每个页面上运行,即使它位于名为chat.js的文件中。