我想在Meteor中创建一个应用程序, 根据我的理解它首先加载的手册 子目录,然后按字母顺序排列。 我的文件结构是这样的......
/server
/lib
/client
/lib
game.js -> already starts declaring the function "makeBoard(){}"
/template.js -> where the function "makeBoard()" is called.
因此看起来错误函数“makeBoard()”不存在,只有在我想要调用它的同一文件中声明时才有效。即使我将文件“game.js”移动到“template.js”所在的目录,也会发生这种情况。 我该如何正确引用Meteor上不同文件中的资源?
答案 0 :(得分:52)
使用全局定义的变量(如avital建议的那样)可行,但不是推荐的代码设计选择(see JS mistake 1 listed here)。
而是在lib
目录中,您可以创建一个文件:
Meteor.myFunctions = {
...
makeBoard : function() { ... },
...
}
然后在任何其他js文件中,您可以调用Meteor.myFunctions.makeBoard()
。这应该在lib
目录中完成,因为Meteor保证lib
中的js文件在其他目录之前加载,因此你的函数已经被加载了。
答案 1 :(得分:46)
使用makeBoard = function() { ... }
定义函数。
使用function foo() { ... }
定义的函数是文件的本地函数,以及使用var bar = ...
定义的变量。