想象一下,如果您願意,應用程序具有一些獨特的視圖/狀態 - 我們稱之爲遊戲。你有一個超世界屏幕,一個戰鬥屏幕,一個多人遊戲界面,或許有一兩個迷你遊戲。瞭解AMD:如何通過單向模塊關係處理響應流程
爲了說明方便,每個視圖之間沒有太多共同的代碼,所以它非常適合AMD--一箇中央控制器/調度器,並且每個遊戲狀態都分成一個單獨的文件/視圖。
dispatcher.core.js
> overworld.view.js
> battle.view.js
> tournament.view.js
> minigame.view.js
輸入和鍵命令被路由到調度器,並滴入到當前活躍視圖,其進而根據需要操縱DOM。單向AMD關係,迄今爲止非常好。
我得到的東西是響應流。通過系統的API響應數據多種多樣,通常會同時影響多個視圖。考慮這種情況下:
- 用戶按下按鈕來移動
- 鍵命令被路由到地圖視圖爲移動動畫
- 地圖發送AJAX請求到服務器的運行結果
- AJAX返回「戰鬥開始」響應到調度
- 調度員告訴地圖視圖禁用本身,然後戰鬥以初始化
調度員是爲此設計 - 接受指導和分發。這似乎是明顯的選擇,不僅僅是讓觀點直接相互影響。
但是,這裏存在一個基本缺陷 - 一旦AJAX結果從視圖發送到調度程序,違反了調度程序和視圖之間的單向關係。您可以將調度程序用於AJAX回調,也可以指示調度程序爲您進行AJAX調用 - 但是無論哪種方式,視圖都需要引用調度程序的方式,據我瞭解,這違反了AMD的核心原則。對於我的生活,我無法弄清楚這將如何正確實施!
我的問題是這個 - 如何正確實施這樣的結構?這是AMD的限制,還是我誤解它在更深層次上的使用?
這個問題的目的是爲更一般的情況,但如果它影響答案可言,我分別使用要求和jQuery用於AMD和AJAX。
啊,我認爲這就是我沒有連接的東西 - 這是t他加載不能循環的依賴關係,而不是函數引用。謝謝! – CodeMoose