2012-07-11 99 views
0

我早些時候詢問過this question有關EXT崩潰瀏覽器的大型實現。Javascript中的基於類的框架導致瀏覽器掛起

我現在已經發現這是主幹和three.js的情況。似乎每個基於類的JavaScript庫都有一個內置的可伸縮性限制,因爲無法限制代碼加載。

在每一種情況下是掛在瀏覽器中的事情是類的實例,而不是對象實例化。即使EXT的「延遲加載」也只會延遲實例化的對象,而不是在EXT甚至開始對象實例化階段之前經常出現類和瀏覽器崩潰。

骨幹試圖通過分離代碼到的意見,以解決這一問題,但只是嘗試按次加載太多的代碼,看着它崩潰。

我不想在這裏呆過。當我詢問'當你實例化1000個EXT組件時會發生什麼',並且我得到迴應,'不要實例化那麼多',響應者完全忽略了這一點。

不要緊的代碼是什麼,它的可擴展性限制是什麼的問題。

而且在EXT,骨幹網和其他很多JS框架,基於類的實例是不是負載平衡。

如何基於類的框架結構來一次不實例的所有類?

但在瀏覽器,腳本加載時間是一種有限的資源和大量基於類的系統必須編譯所有的一次,這是明確的可擴展性問題與每一個基於類的JavaScript框架:EXT。 Backbone,Three.js等等。

任何人都可以解釋如何使這些框架可擴展嗎?

任何幫助讚賞

+2

究竟是什麼問題? – 2012-07-11 04:04:06

+0

更新了一個更具體的問題,謝謝! – BishopZ 2012-07-11 04:05:49

+2

你能提供導致上述崩潰的示例代碼嗎?哪些瀏覽器? – 2012-07-11 04:07:09

回答

4

4000行代碼是不是很多。和瀏覽器的崩潰通常意味着無休止的自我維持其反彈一個到另一個消耗所有可用內存循環,所以一般來講,這裏有一些可能的原因:

  • 非命名空間框架的名稱衝突
  • 超載原型與功能,並通過圓形物體迭代
  • 執行不力

要調試,

  1. 搶每一個框架
  2. 的發展副本設置一些斷點到有罪構造
  3. 使用JavaScript探查器,看看到底發生了什麼
+0

我很感謝你的建議,並且肯定會看到它如何成爲其他人的好建議。我可以親自證明,這不是「不好實施」的情況。 – BishopZ 2012-07-11 04:43:44

+0

@BishopZ如果你想測試這些框架是否被設計爲一起工作,那麼把你的整個應用程序排除在外,並嘗試實例化一個對象。如果它使瀏覽器崩潰,這意味着你必須改變這些框架的工作方式。 ExtJS(v3早在幾天前)曾經爲每個其他框架都有適配器。 – 2012-07-11 05:01:48

+0

我很抱歉,但我不明白你的回覆。你能進一步解釋嗎? – BishopZ 2012-07-11 05:24:55

0

這是不是一個真正的答案,但我不認爲類/對象的區別在這種情況下是相關的。就JavaScript而言,一切都是一個對象。 「類」只是ExtJS等特定框架允許您使用的更高級別的概念。

即使EXT的「懶加載」僅延遲被實例化的對象,而不是類

ExtJS的4確實(通過使AJAX請求)有能力只加載類when they're needed