SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

i042416發表於2019-06-26

首先在UI5應用的manifes.json裡,定義了UI5應用的入口檢視為App:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

偵錯程式裡的pending陣列的兩個元素:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

實際上對應了我在App.controller.js裡定義的兩個依賴:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

而aModules陣列裡的兩個物件,就是BaseController和JSONModel模組載入後的例項:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

有經驗的開發人員從這些函式列表bindProperty, bindTree, dataLoaded,getJSON等就能得知這個例項是JSONModel的實現。

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

這個註釋寫的比較清楚,如果factory函式返回不為false的值,則該值需要被賦到module的exported欄位去。
from  https://github.com/amdjs/amdjs-api/blob/master/AMD.md
// "If the factory function returns a value (an object, function, or any value that coerces to true),
// then that value should be assigned as the exported value for the module."

UI5模組的載入器:ui5loader.js

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

那麼我們應用程式碼的controller裡到底return什麼值呢?即BaseController呼叫extend方法後的返回值。

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

這個返回值在BaseController的基礎上,包含了我們應用程式自定義的onInit方法。

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

至此,App.controller.js這個模組就載入完成了。
執行ready之前:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

ready函式的職責就是把模組例項的state設定成Ready,settled設定成true:

SAP UI5應用入口App.controller.js是如何被UI5框架載入的?

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


SAP UI5應用入口App.controller.js是如何被UI5框架載入的?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2648849/,如需轉載,請註明出處,否則將追究法律責任。

相關文章