我们目前正在Marionette开展一个大项目。我们的架构基于http://www.backbonerails.com/。该项目分为多个模块,每个模块都有自己的职责。模块重用是很重要的,因此可以在网站的任何区域进行渲染。现在模块就像这样启动:
App.execute "module:name_of_the_module:action", @model, @layout.regionName
到目前为止,这项工作很顺利,但现在我们已将路由器添加到项目中。每个模块都应该对其路由负责,因此它们位于模块中。现在,当路由器获得路由并开始路由时,它们缺少要使用的区域和模型。因此,我们首先必须将区域和模型保存到稍后将在路由器中使用的模块中。
App.commands.setHandler "module:name_of_the_module:action", (model, region) ->
MyModule.region = region
MyModule.model = model
这不是一个很好的方法,因为每个小部件(显示,编辑,创建......)通常都有很多动作,我们不得不重复一遍。
所以我问 - 你如何初始化模块并使用路由器?有一些最佳做法吗?
答案 0 :(得分:0)
我创建了一个marionette.js插件,它允许你进行基于状态的路由(很像angular.js ui-router)。您可以完全消除代码中的模块并重用控制器。