使用RequireJS的持久性/可访问BackboneJS模型

问题描述:

我想要在构建具有RequireJS和BackboneJS的Web应用程序时遇到问题的“最佳实践”解决方案。使用RequireJS的持久性/可访问BackboneJS模型

我的应用程序需要(在启动或即将启动之后)为大部分数据擦除服务,然后解析该数据。

很显然,我希望我的模型能够抓取数据并将其解析(分成多个子模型),但是我绊倒的一点是如何让模型保持持久性。 BackboneJS让模型感觉应该通过视图实时实例化,但这在我的场景中不起作用。

此外,由于RequireJS将全部命令隔离到全局命名空间之外的模块中,所以我在如何使我的持久模型可用于我的视图 - 我应该只使用Singleton模式吗?如果是这样,是否有任何关于如何避免使用RequireJS的循环依赖问题的建议?

我对此的解决方案是创建一个模块,创建一个简单的对象,并将require.js传递给所有其他模块。例如,

创建yourobject.js并将其包含在所有模块中。在yourobject.js中,创建并返回一个对象。

# coffeescript 
define [],() -> 
    YourObj = 
    # you can put all kinds of things in here or just leave it empty 
    init: -> 
     # i usually put my app init/backbone bootstrapping code 
     # here then call it in the app module 

    # and return it 
    YourObj 

然后就包括任何其他模块,在该模块中,你可以使用YourObj,如果它是一个全局对象(在某种意义上)。您可以将实例化的骨干视图保存到它,未来操纵的骨干路由器......无论你喜欢什么。

RequireJS隔离一切成模块的全局命名空间

外试想RequireJS的作为您的代码提供了一个很好的保护伞。 RequireJS没有全局命名空间的污染,但是这并不妨碍你像对待全局一样传递一个对象。希望这可以清理一些东西!

您可以在视图之外创建你的寿命长的模型,并通过他们在:

var view = new MyView({model: theModelInstance}); 

当你摆脱了看法,你需要记住解开一切可能防止该视图被事件垃圾收集。