請(qǐng)問一下,Component.js這個(gè)文件,程式是如何調(diào)用的?我看在index.js中,只是指定了路徑,并沒有指定文件名稱。 然后我試著更改了一下文件名稱為component.js(首字母小寫),然后通過調(diào)試發(fā)現(xiàn)無法加載這個(gè)文件。 難道這個(gè)文件名稱是SAP UI5中hardcode的嗎?
回答:本地訪問 url,打開 Chrome 開發(fā)者工具,切換到 Network 標(biāo)簽頁,在輸入框里輸入
component.js
后,發(fā)現(xiàn)了我們自己編寫的
Component.js
文件被加載:
把鼠標(biāo)放到
initiator
這一列上,就能看到發(fā)起這個(gè)文件請(qǐng)求的調(diào)用棧:
單擊下圖高亮區(qū)域,即 Component-dbg.js 文件的第 3361 行:
在這一行設(shè)置斷點(diǎn),然后刷新瀏覽器,斷點(diǎn)觸發(fā):
按 F11 單步調(diào)試進(jìn)去:
這里發(fā)現(xiàn)確實(shí)是像提問的朋友那樣說的,Component 這個(gè)文件名是 SAP UI5 硬編碼的,首字母改成小寫
c
都不行。下面的代碼,首先把應(yīng)用程序里我們自定義的命名空間
sap.ui5.walkthrough
同
.Component
做字符串連接,然后把連接后的字符串里所有的
.
替換成
/
:
最后使用 SAP UI5 標(biāo)準(zhǔn)的工具庫去加載這個(gè)
Component.js
文件:
SAP UI5 模塊是可以在瀏覽器中加載和執(zhí)行的 JavaScript 文件。 沒有確定的規(guī)則去定義什么代碼應(yīng)該屬于一個(gè)模塊——捆綁在模塊中的內(nèi)容取決于開發(fā)人員,但通常一個(gè)模塊內(nèi)的內(nèi)容應(yīng)當(dāng)具有共同的主題。下面是一個(gè)模塊的例子:
sap.ui.define("SomeClass", ['sap/mylib/Helper', 'sap/m/Bar'], function(Helper, Bar) { // create a new class var SomeClass = function () {}; // add methods to its prototype SomeClass.prototype.foo = function () { // use a function from the dependency 'Helper' in the same package (e.g. 'sap/mylib/Helper' ) var mSettings = Helper.foo(); // create and return an sap.m.Bar (using its local name 'Bar') return new Bar(mSettings); }; // return the class as module value return SomeClass; }); // later requiring the previously defined module sap.ui.require(['SomeClass'], function(SomeClass) { var oInstance = new SomeClass(); });
上圖 sap.ui.define 函數(shù)的第二個(gè)輸入?yún)?shù)是模塊的依賴。將每個(gè)依賴項(xiàng)添加到 sap.ui.define 調(diào)用可能會(huì)導(dǎo)致在執(zhí)行模塊之前必須加載許多模塊。
聯(lián)系客服