我想將一個名稱空間中的所有類合併爲一個文件,而不是每個文件都加載它們。是的,我知道加載程序不應該用於生產環境,但很少使用這些名稱空間。我可以在一個文件中加載整個命名空間嗎?
可以說我有
App.Employee.*
我現在想要一個文件/請求內加載整個App.Employee
命名空間中的命名空間。對我來說,這聽起來應該是可能的,但我沒有設法讓它工作,因爲裝載機正在尋找名爲App.Employee
的類。
所以這是可能的,或者是理論上可行還是根本不可能?
我想將一個名稱空間中的所有類合併爲一個文件,而不是每個文件都加載它們。是的,我知道加載程序不應該用於生產環境,但很少使用這些名稱空間。我可以在一個文件中加載整個命名空間嗎?
可以說我有
App.Employee.*
我現在想要一個文件/請求內加載整個App.Employee
命名空間中的命名空間。對我來說,這聽起來應該是可能的,但我沒有設法讓它工作,因爲裝載機正在尋找名爲App.Employee
的類。
所以這是可能的,或者是理論上可行還是根本不可能?
最好的方法是構建您的應用程序,包括使用較少的零件。如果您的應用程序預先加載20或30秒,但延遲時間可能會更加明顯且明顯,則無關緊要。 Sencha Cmd可以幫助你。
如果您仍然認爲您的應用可以從動態加載中受益,請使用Ext.Loader.loadScript
。它具有callback
參數,當有問題的腳本被加載時,這個參數會給你一個行動點。該腳本不一定是Ext類,任何JavaScript都會執行 - 包括壓縮形式的應用程序的一部分。
您必須將所有類放入一個js文件並加載該文件(只需將所有單個文件中的代碼複製並粘貼到新文件中,並將其命名爲App.employee.js
)。 無法在一個Ajax請求中加載多個文件,因此加載器無法幫助您。
查看Ext docs for details on the loader。
FYI:
分機使用CamelCase
命名的類和命名空間。他們的名字空間都以小寫字母開頭,他們的類都以大寫字母開頭。這使得區分這兩種類型變得更容易。 建議遵循該約定。更多關於這個的可以找到here。
您可以使用Ajax請求加載任何文件嗎?據我所知,由於ajax請求的頭部信息,這根本不可能?或者這隻適用於如果我也想在本地保存文件?無論如何,我已經嘗試了你的建議,並且正如我在我的問題中寫的,我最終發現錯誤是沒有名爲App.Employee的類,這是正確的,因爲它只是一個名稱空間。 – seba 2013-03-04 07:22:49
您可以在一個文件/App/employee.js中收集所有名稱空間App.Employee。*,然後在需要時使用文件完整路徑加載它。
Ext.require("/App/employee")
UPD。我也發現了一些問題。 Ext.loader不等待employee.js。當employee.js中的類具有依賴關係時,它會拋出異常。代替 嘗試Ext.syncRequire("/App/employee")
。它在我的測試中運行良好。
並且不要忘記聲明文件的完整路徑(從您的webroot)。
感謝您的回覆,我沒有測試它,但它聽起來很有前途:)也許你會看看[這個](http://stackoverflow.com/questions/14998325/why-do-i-get- a-ref-object-back-when-calling-a-refrence)呢? – seba 2013-03-08 08:05:17