ExtJs中動態載入機制研究 轉)

2021-09-06 23:08:24 字數 1463 閱讀 5803

覺得寫的太好了,怕弄丟了,轉一下:

昨天我們team對於extjs的動態載入機制做了些深入研究,這裡先share下controller載入的結果。

以service registry portlet為例:

比如,在 liferay-portlet.xml中定義了:

然後在第5314行,就通過另外乙個方法getprefix()來根據controller的類名來獲取它的字首,並且這個字首會最終參與到運算。我們這裡省去這段邏輯,反正最終,這個"serviceregistry.controller.mainpanel'的字首是"serviceregistry",如上圖的除錯結果。

注:以上的所有結論和我昨天猜想的完全一致,昨天並沒有除錯結論,看來我計算機感覺不錯,小得意一下~

既然上面paths給出了2個候選的路徑名(乙個是ext級別的,乙個是專案serviceregistry級別的),這2個路徑名都有可能作為最終載入資源檔案的備選路徑,那麼選取哪乙個路徑作為最終載入路徑呢?就要看下面的分析了。

所以最後工作就很清楚了,它會吧所有的路徑名中的"."替換成"/" ,然後最後結尾加上".js"副檔名,所以最終就成了js controller檔案的資源路徑:

這個路徑是正確的而且是我們預期的。。

所以從以上除錯,我們可以總結出以下結論:

(1)對於controller而言,它的載入路徑總是有2個備選路徑,乙個是ext框架級別的備選路徑,它的預設值是當前目錄".",另外乙個是專案級別的路徑,並且專案級別的路徑的優先順序高於框架級別。只有專案級別路徑載入不到js資源檔案才會從框架級別的路徑中載入js檔案。

(4)所有的資源檔案最終路徑都是用.分割的路徑最終替換成的/分割的路徑並且尾部追加副檔名來形成的,專案中任何地方不會涉及裸露的路徑字串。

ExtJs中動態載入機制研究

以service registry portlet為例 比如,在 liferay portlet.xml中定義了 然後在第5314行,就通過另外乙個方法getprefix 來根據controller的類名來獲取它的字首,並且這個字首會最終參與到運算。我們這裡省去這段邏輯,反正最終,這個 servic...

ExtJS 4中動態載入的路徑設定

在此首先感謝csdn的文順 ,是他提醒了我需要寫這文的。1 getpath function classname 10 11 path paths prefix 12 classname classname substring prefix length 1 13 14 15if path leng...

ExtJS 4中動態載入的路徑設定

在此首先感謝csdn的文順 ,是他提醒了我需要寫這文的。1getpath function classname 10 11path paths prefix 12classname classname substring prefix length 1 13 1415if path length 0...