Meteor-javascript函数和文件的正确结构和范围?

Meteor-javascript函数和文件的正确结构和范围?,meteor,meteor-blaze,Meteor,Meteor Blaze,首先,我熟悉的是,我在这里总结了: 子目录中的文件在父目录中的文件之前加载 目录,以便加载最深子目录中的文件 首先,最后加载根目录中的文件 在目录中,文件按字母顺序加载 文件名 按上述方式排序后,名为 lib被移动到其他所有对象之前(保留它们的顺序) 最后,所有匹配main.*的文件都会在其他文件之后移动 (维护他们的秩序) (不知道他们为什么说“移动”而不是“加载”,但我想他们只是指“加载”。) 我的应用程序具有以下结构: ├── client/ │   ├── html/ │   │  

首先,我熟悉的是,我在这里总结了:

  • 子目录中的文件在父目录中的文件之前加载 目录,以便加载最深子目录中的文件 首先,最后加载根目录中的文件

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

  • 按上述方式排序后,名为 lib被移动到其他所有对象之前(保留它们的顺序)

  • 最后,所有匹配main.*的文件都会在其他文件之后移动 (维护他们的秩序)

(不知道他们为什么说“移动”而不是“加载”,但我想他们只是指“加载”。)

我的应用程序具有以下结构:

├── client/
│   ├── html/
│   │   ├── main.html
│   │   ├── nav.html
│   │   └── login.html
│   ├── js/
│   │   ├── lib/
│   │   │   └── util.js
│   │   ├── main.js
│   │   └── nav.js
│   └── my_app.less
├── packages/
│   └── some_stuff_here
├── server/
│   └── main.js
├── shared.js
├── smart.json
└── smart.lock
client/js/nav.js
文件中,我有以下JavaScript代码:

Template.nav.nav_close = function() {
    return ! Session.get(slugify(this.name)+'-nav-close')
}
var slugify = function(value) {
    if (value) {
        return value.replace(/\s+/g, '-').replace(/\./g, '-').toLowerCase();
    }
}
client/js/lib/util.js文件中,我有以下JavaScript代码:

Template.nav.nav_close = function() {
    return ! Session.get(slugify(this.name)+'-nav-close')
}
var slugify = function(value) {
    if (value) {
        return value.replace(/\s+/g, '-').replace(/\./g, '-').toLowerCase();
    }
}
我的理解是,应该首先加载
client/js/lib/util.js
文件,这将使我的
slagify
函数可用,然后加载
client/js/nav.js
,并且
slagify
函数应该对它可用

事实上,我在Chrome控制台中看到以下错误:

Exception from Deps recompute function: ReferenceError: slugify is not defined
    at Object.Template.nav.nav_close (http://localhost:3000/client/js/nav.js?4d7c7953063828c0e4ec237c1a5c67b849076cb5:2:26)

为什么会出现此错误?

slagify
具有文件作用域,因为它是用
var
声明的。删除
var
以赋予其包(应用程序)范围