如何在Meteor中的客户端启动时使用全局Coffeescript变量?

如何在Meteor中的客户端启动时使用全局Coffeescript变量?,coffeescript,meteor,Coffeescript,Meteor,在lib.coffee中,我有@x=1。在client.coffee中,我有Meteor.subscribe('data',x)。当页面加载时,我在控制台中得到错误: 未捕获引用错误:未定义x 但是,在页面完成加载后,我在控制台中键入x,它将被识别为值为1的全局变量。它与源文件的求值顺序有关。对于所有细节,请仔细阅读文档中的部分。您可以使用文件名和位置玩多种游戏,以更改其加载顺序: 更改文件名,使其按字母顺序显示 将需要首先加载的文件放在子目录中 将需要首先加载的文件放在lib目录中 但是,

lib.coffee
中,我有
@x=1
。在
client.coffee
中,我有
Meteor.subscribe('data',x)
。当页面加载时,我在控制台中得到错误:

未捕获引用错误:未定义x


但是,在页面完成加载后,我在控制台中键入
x
,它将被识别为值为1的全局变量。

它与源文件的求值顺序有关。对于所有细节,请仔细阅读文档中的部分。您可以使用文件名和位置玩多种游戏,以更改其加载顺序:

  • 更改文件名,使其按字母顺序显示
  • 将需要首先加载的文件放在子目录中
  • 将需要首先加载的文件放在
    lib
    目录中
但是,在这种特殊情况下,您可以通过执行以下操作来延迟订阅的激活:

Meteor.startup ->
  Meteor.subscribe 'data', x


在对所有源文件进行评估后,可以使用这些技巧来执行代码。

非常感谢David回答了我的大多数问题:)我想知道你为什么不对这些问题进行投票-是因为它们的格式不好还是不太可能适用于其他人?当然没有问题。:)这是个好问题。。。我可能应该对投票更慷慨一些,因为我希望得到同样的回报+1.
Tracker.autorun ->
  if Meteor.userId()
    Meteor.subscribe 'data', x