使用Meteor从单独的文件中调用函数

rog*_*lle 32 function file-structure meteor

我想在Meteor中创建一个应用程序,从我理解它首先加载到子目录中的手册,然后按照字母顺序.我的文件结构是这样的......

/server
/lib
/client
    /lib
        game.js -> already starts declaring the function "makeBoard(){}"
    /template.js -> where the function "makeBoard()" is called.
Run Code Online (Sandbox Code Playgroud)

因此看起来错误函数"makeBoard()"不存在,只有当我在我想要调用它的同一文件中声明时才有效.即使我将文件"game.js"移动到"template.js"所在的目录,也会发生这种情况.我应该如何正确引用Meteor上不同文件中的资源?

Shw*_*ogg 52

正如avital建议的那样,使用全局定义的变量将起作用,但不是推荐的代码设计选择(参见此处列出的JS错误1).

而是在您的lib目录中,您可以创建一个文件:

Meteor.myFunctions = {
...
    makeBoard : function() { ... },
...
}
Run Code Online (Sandbox Code Playgroud)

然后在任何其他js文件中,您可以调用Meteor.myFunctions.makeBoard().这应该在lib目录中完成,因为Meteor保证lib在其他目录之前加载js文件,因此您的函数已经被加载.

  • 非常聪明.如果你从多个文件共享函数,这将使它成为可能:Meteor ['myFunctions'] = Meteor ['myFunctions'] || {}; Meteor ['myFunctions'] ['createinstanceclass'] = function(){return new instanceclass(); } Meteor ['myFunctions'] =流星['myFunctions'] || {}; Meteor ['myFunctions'] ['createsolutionclass'] = function(){return new solutionClass(); 如果您同意,请将其添加到您的答案中; 如果没有请解释如何做得更好:) (3认同)

avi*_*tal 46

使用定义函数makeBoard = function() { ... }.

定义的函数function foo() { ... }是文件的本地函数,以及定义的变量var bar = ....