Meteor 的加载顺序和 Angular 模块

Meteor's Load Order and Angular Modules

我的 Angular-Meteor-app 的文件夹结构如下所示:

.
├── client
│   ├── app
│   │   ├── auth
│   │   │   ├── login
│   │   │   │   ├── login.controller.js
│   │   │   │   ├── login.html
│   │   │   ├── register
│   │   │   │   ├── ...
│   │   │   ├── reset-password
│   │   │   │   ├── ...
│   │   │   ├── route.config.js
│   │   ├── lib
│   │   │   ├── app.module.js
│   │   │   ├── auth.module.js
│   │   ├── ...
│   ├── ...
├── ...

请注意,由于 Meteor 的加载顺序,我无法将 auth.module.js 放在 auth 目录下,而必须将其放在 lib 目录下。否则 Angular 会抱怨 auth 模块在 login.controller.js 中使用时无法注入。 (子目录中的文件先于父目录中的文件加载,lib 中的所有文件先于其他所有文件移动。)

我想要的是将 auth.module.js 移动到 auth 文件夹中,这样我的 auth 模块的所有文件都在正确的位置:

.
├── client
│   ├── app
│   │   ├── auth
│   │   │   ├── login
│   │   │   │   ├── login.controller.js
│   │   │   │   ├── login.html
│   │   │   ├── register
│   │   │   │   ├── ...
│   │   │   ├── reset-password
│   │   │   │   ├── ...
│   │   │   ├── auth.module.js
│   │   │   ├── route.config.js
│   │   ├── lib
│   │   │   ├── app.module.js
│   │   ├── ...
│   ├── ...
├── ...

知道如何管理这个吗?

我想你至少有两个选择:

使 client/auth 扁平化,这样字典顺序将在 login.controller.js.

之前加载 auth.module.js
│   │   ├── auth
│   │   │   ├── auth.module.js
│   │   │   ├── login.controller.js
│   │   │   ├── login.html
│   │   │   ├── ...

或者使用另一个 lib 子目录

│   │   ├── auth
│   │   │   ├── lib
|   │   │   │   ├── auth.module.js
│   │   │   ├── login
│   │   │   │   ├── login.controller.js
│   │   │   │   ├── login.html
│   │   │   ├── ...

当然,有人可能会争辩说您的代码不应该依赖于加载顺序,即,您应该只在所有内容加载完毕后才使用授权代码,例如,在 oMeteor.startuponCreate 中模板数量。