Meteor:引用不同目录中的其他javascript类
Meteor: reference other javascript classes in different directory
在我的流星应用程序中。我在base_controller.js
:中定义了一个BaseController
BaseController = RouteController.extend({
layoutTemplate: 'mainLayout'
});
然后我在post_controller.js
:中定义了PostController
PostController = BaseController.extend({
});
若我把base_controller.js
和post_controller.js
放在同一个目录中,并没有发现错误。但如果我放在不同的目录中,例如controller
中的base_controller.js
和controller/post
中的post_controller.js
,我在运行应用程序时会遇到异常:
ReferenceError:BaseController未定义
我的问题是:如何将这些javascript文件划分到不同的目录中?我需要这样做,因为我的应用程序将有许多控制器,所以将所有控制器放在同一目录(没有任何子目录)将使项目难以维护。
感谢:)
您必须了解Meteor是如何加载文件的。请参阅文件加载顺序小节:http://docs.meteor.com/#/full/structuringyourapp
从文档中:
有几种装载顺序规则。它们按顺序应用于应用程序中的所有适用文件,优先级如下:
- HTML模板文件总是先于其他文件加载
- 以main开头的文件。最后加载
- 接下来加载任何lib/目录中的文件
- 下一步加载路径更深的文件
- 然后按整个路径的字母顺序加载文件
如果您希望首先加载文件,请将它们放在项目根目录的lib目录中或任何子目录中。
您的PostController依赖于BaseController,所以我会将BaseController放入lib文件夹中。
如果需要指定确切的文件加载顺序,可以创建具有所需功能的包。只能在包中指定确切的文件加载顺序。
如果两者都在lib/目录中,我认为答案来自文档中的4和5:
- 下一步加载路径更深的文件
- 然后按整个路径的字母顺序加载文件
因此,lib/controller/post/PostController
应该在lib/controller/BaseController
之前加载,因为它的路径更深。
我认为解决方案可能是将它们都移动到lib/controller
中,以便首先加载BaseController,因为它将按字母顺序排列在第一位。
- Javascript阻止其他Javascript代码
- 在其他javascript框架模板中运行angular指令
- 如何使用javascript、jquery或其他javascript框架过滤数据
- Meteor:引用不同目录中的其他javascript类
- 如何使用其他 JavaScript 文件中的新类访问我的 createjs 导出的 js 文件
- 使用其他javascript文件nodejs和express发送和获取数据 socket.io
- 在WordPress上运行其他javascript之后再运行javascript
- 此JavaScript函数可以单独使用,但不能与其他JavaScript函数一起使用
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- 停止jQuery表单验证重置由其他JavaScript填充的typeahead.js输入字段
- jQuery插件干扰W/其他Javascript
- 是否可以将条件语句或其他javascript作为参数传递到ember句柄中
- 如果我用javascript隐藏了一个文本输入元素,那么其他javascript函数仍然可以访问输入到其中的值
- 如何在Chrome扩展名的内容JS文件中包含其他JavaScript文件
- 如何加载 jQuery 和其他 JavaScript 文件
- jQuery .click .appendTo 不加载其他 javascript
- 使用 jQuery 从其他 JavaScript 文件设置变量值
- 是否可以在GWT或任何其他JavaScript框架中选择垃圾收集算法
- 如何调用在其他 JavaScript 文件中定义的静态 JS 函数
- Twitter iframe和其他JavaScript获取前者内容的执行顺序