2012-11-03 39 views
0

從我所瞭解的情況來看,使用AMD管理依賴關係得到加載的一個好處是,但在使用require.js的單頁應用程序中,所有依賴關係都將加載。如何在單頁應用程序上使用AMD來只加載某些依賴關係

例如使用骨幹或類似的東西,可以說我有以下文件

main.js需要router.js
router.js需要view_a.js和view_b.js

router.js呈現的意見

routes: { 
    "view_b":"b", 
    "view_a":"a" 
}, 
a:function{ 
    showView(new ViewA()); 
}, 
b:function{ 
    showView(new ViewB()); 
} 

現在可以說,我去example.com/#view_b哪些僅需要view_b.js中的代碼,但不使用view_a.js中的任何內容。反正只有使用require.js或類似的東西加載view_b.js才能加載或優先化?

+0

爲什麼你的路由器需要這些視圖文件? – Bergi

+0

@Bergi因爲路由器呈現視圖。 –

+0

但只有需要的那個,不是嗎?所以它應該動態地要求它 – Bergi

回答

0

你不能這樣做,因爲require.js在執行之前需要加載文件的所有依賴關係。

我看到了兩個解決方案,您的問題:

  • 創建兩個不同的Backbone.Router,像只「需要」爲每個路由器需要的模塊(恕我直言,這不是最好的解決辦法)

  • 使用require.js optimizer,這將結合所有的JavaScript文件到一個。當然,你只用它來生產,而不是開發。

相關問題