使用backbone.marionette和requireJs的Web应用程序的循环依赖关系

Lor*_*ard 8 javascript requirejs backbone.js backbone-routing marionette

我遇到以下情况.

我使用requireJs来加载模块,我不想使用全局变量.

main.js负责加载路由器.
然后路由器加载应用程序,应用程序加载几个subApps.

一切都已初始化后,subApps需要router制作router.navigate.

架构:

main.js -> router -> app -> subApp -> router
Run Code Online (Sandbox Code Playgroud)

然后我遇到循环依赖的问题,因此subApp中的路由器将是未定义的.

重新组织代码或解决此问题的最佳方法是什么?有关于此的一些例子吗?

ant*_*njs 5

架构:

 main.js -> router -> app -> subApp -> router
Run Code Online (Sandbox Code Playgroud)

是正确的.

如果您使用的是backbone.marionette,为了从app和subApp访问路由器而不使用global var,您应该以这种方式在路由器中启动应用程序:


// router.js
YourApp.start(router: router);
Run Code Online (Sandbox Code Playgroud)
// app.js
YourApp.addInitializer(function(options){
  // do useful stuff here
  var myView = new MyView({
    router: options.router
  });
  YourApp.mainRegion.show(myView);
});
Run Code Online (Sandbox Code Playgroud)