2012-04-13 57 views
2

我想要在構建具有RequireJS和BackboneJS的Web應用程序時遇到問題的「最佳實踐」解決方案。使用RequireJS的持久性/可訪問BackboneJS模型

我的應用程序需要(在啓動或即將啓動之後)爲大部分數據擦除服務,然後解析該數據。

很顯然,我希望我的模型能夠抓取數據並將其解析(分成多個子模型),但是我絆倒的一點是如何讓模型保持持久性。 BackboneJS讓模型感覺應該通過視圖實時實例化,但這在我的場景中不起作用。

此外,由於RequireJS將全部命令隔離到全局命名空間之外的模塊中,所以我在如何使我的持久模型可用於我的視圖 - 我應該只使用Singleton模式嗎?如果是這樣,是否有任何關於如何避免使用RequireJS的循環依賴問題的建議?

回答

1

我對此的解決方案是創建一個模塊,創建一個簡單的對象,並將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沒有全局命名空間的污染,但是這並不妨礙你像對待全局一樣傳遞一個對象。希望這可以清理一些東西!

1

您可以在視圖之外創建你的壽命長的模型,並通過他們在:

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

當你擺脫了看法,你需要記住解開一切可能防止該視圖被事件垃圾收集。