Meteor,coffeescript文件在每个页面上运行

时间:2014-06-26 21:25:35

标签: coffeescript meteor

我刚刚开始使用Meteor,并遇到了一些不一定是问题但我不理解的事情。我在名为chat.coffee ...

的文件中有以下代码
Meteor.setInterval ( ->
  console.log "Hello " + roomName
  Meteor.call('keepAlive', Meteor.user(), roomName)
  return
), 5000

我最初认为咖啡脚本文件仅在其关联的html文件上运行。这似乎不是这种情况,因为无论文件名如何,此代码都在每个页面上运行。这是事情应该起作用的预期方式,如果是这样,是否有办法强制只在某些页面上运行某些代码。

有一点需要注意的是,此代码在客户端文件夹中运行。

2 个答案:

答案 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的文件中。