Meteor的顺序包括我的js文件

dem*_*mas 5 javascript meteor

我有一个js文件:

function library_f() {
}

function some_f() {
  library_f();
}

function another_f() {
  library_f();
}
Run Code Online (Sandbox Code Playgroud)

但代码看起来很难看,我决定将我的js文件拆分为三个:

one.js:

function library_f() {
}
Run Code Online (Sandbox Code Playgroud)

two.js:

function some_f() {
  library_f();
}
Run Code Online (Sandbox Code Playgroud)

three.js所:

function another_f() {
  library_f();
}
Run Code Online (Sandbox Code Playgroud)

但现在我得到了错误

library_f() is not defined
Run Code Online (Sandbox Code Playgroud)

如何设置包含我的js文件的顺序?

Aks*_*hat 20

来自文档:

  • 首先加载应用程序根目录下的lib目录中的文件.匹配main.*的文件将在其他所有内容之后加载.

  • 子目录中的文件在父目录中的文件之前加载,以便最先加载最深子目录中的文件(在lib之后),并且最后加载根目录中的文件(除了main.*之外).

  • 在目录中,文件按文件名的字母顺序加载.

这些规则堆栈,因此在lib中,例如,文件仍然按字母顺序加载; 如果有多个名为main.js的文件,则子目录中的文件会先加载.

但看起来无法访问这些功能,因为它们不是全局的.在meteor中,除非变量或函数是全局的,否则每个文件的变量/函数都不能被另一个文件访问.

所以你需要以这种方式声明你的函数:

library_f = library_f() {
...
}
Run Code Online (Sandbox Code Playgroud)

这样它就可以被其他文件访问了.变量也是如此:

var x = true; //Not accessible by other files
x = true; //Accessible by other files

var dothis = function () {...} //Not accessible by other files
dothis = function() {..} //Not accessible by other files
function dothis() {..} //Not accessible ny other files
Run Code Online (Sandbox Code Playgroud)