2012-02-12 32 views
24

我已經決定將我的應用程序路由更改爲客戶端而不是服務器端。這意味着我需要一種在用戶瀏覽網站時切換視圖內外的視圖。我能找到的唯一一條嘗試記錄這篇文章的文章是:How to switch views using Backbone.js在骨幹網絡中切換視圖以在頁面之間進行導航 - 最佳方式是什麼?

我明白這是如何工作的,但我認爲這不是一個好的方法。我想保留我的觀點 - 因爲這是正確的?要爲應用程序的可區分部分分別提供視圖?我認爲有一個大的「ContentView」,然後只是把東西拉進去,重新渲染有點粗糙,繞過所有你可以做的很酷的模塊化。

那麼最好的方法是什麼呢?理想情況下,我需要一個類似於上述文章中記載的功能,但以骨幹視圖爲參數。

回答

37

我已經寫了關於這個問題的幾篇文章:

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

和較新的一個,從這個職位需要的想法,並正式確定它更多:

http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

重在大多數情況下,使用視圖實際上是一種反模式。通常會有很多額外的代碼和額外的代碼來牽扯到查看實例,讓它們重新將自己附加到DOM並正確處理註冊的DOM事件。此外,您還會冒內存泄漏的風險(我的第一篇文章談到了這個問題),並通過佔用太多內存來破壞應用程序的性能。

如果您的意見使用的是「昂貴」的資源,則應該將該資源緩存在視圖之外並重新使用它。您的觀點應該便宜且快速,以創建,渲染,展示和銷燬。

+1

首先,很棒的閱讀,你的博客已經直接進入我的RSS提要。我正在考慮現在轉向木偶。你如何看待requireJS之類的庫及其用法?我認爲有效性在客戶端路由實施後立即失效...... – 2012-02-12 20:48:04

+1

requirejs完全受到牽線木偶的支持,我的許多客戶都將它與牽線木偶結合使用。我個人不會在自己的項目中使用它,但它只是個人偏好。它絕對可以解決一些真正的問題,而且它現在是JS社區中的一個重要工具。真正的測試將是JS在瀏覽器中獲得一個真正的模塊系統後是否需要繼續。 – 2012-10-18 01:35:14

+0

不要忘記在View#render()方法中添加'this.delegateEvents()',否則類似'events:{「click .button」:「doStuff}}'渲染的。 – James 2015-07-28 05:20:52

相關問題