在我的流星应用程序中。我在BaseController
中定义了base_controller.js
:
BaseController = RouteController.extend({
layoutTemplate: 'mainLayout'
});
然后我在PostController
中定义了post_controller.js
:
PostController = BaseController.extend({
});
如果我将base_controller.js
和post_controller.js
放在同一目录中,则不会发现错误。但是如果我放入不同的目录,例如base_controller.js
中的controller
和post_controller.js
中的controller/post
,我将在运行应用程序时遇到异常:
ReferenceError:未定义BaseController
我的问题是:如何将这些javascript文件分成不同的目录?我需要这样做,因为我的应用程序将有许多控制器,所以将所有控制器放在同一目录(没有任何子目录)将使项目难以维护。
谢谢:)
答案 0 :(得分:1)
您必须了解Meteor如何加载您的文件。请参阅文件加载顺序小节:http://docs.meteor.com/#/full/structuringyourapp
有几种加载顺序规则。它们按顺序应用于应用程序中的所有适用文件,优先级如下:
如果您希望首先加载文件,请将它们放在项目根目录或任何子目录中的 lib 目录中。
你的PostController依赖于BaseController,所以我将BaseController放入 lib 文件夹。
如果您需要指定确切的文件加载顺序,则可以创建具有所需功能的包。您只能在包中指定确切的文件加载顺序。
答案 1 :(得分:1)
如果两者都在lib /目录中,我认为答案来自docs中的4和5:
所以应该是lib/controller/post/PostController
在lib/controller/BaseController
之前加载的情况,因为它的路径更深。
我认为解决方案可能是将它们都移到lib/controller
中,以便首先加载BaseController,因为它将首先按字母顺序排列。