2013-03-02 56 views
3

我想將一個名稱空間中的所有類合併爲一個文件,而不是每個文件都加載它們。是的,我知道加載程序不應該用於生產環境,但很少使用這些名稱空間。我可以在一個文件中加載整個命名空間嗎?

可以說我有

App.Employee.* 

我現在想要一個文件/請求內加載整個App.Employee命名空間中的命名空間。對我來說,這聽起來應該是可能的,但我沒有設法讓它工作,因爲裝載機正在尋找名爲App.Employee的類。

所以這是可能的,或者是理論上可行還是根本不可能?

回答

2

最好的方法是構建您的應用程序,包括使用較少的零件。如果您的應用程序預先加載20或30秒,但延遲時間可能會更加明顯且明顯,則無關緊要。 Sencha Cmd可以幫助你。

如果您仍然認爲您的應用可以從動態加載中受益,請使用Ext.Loader.loadScript。它具有callback參數,當有問題的腳本被加載時,這個參數會給你一個行動點。該腳本不一定是Ext類,任何JavaScript都會執行 - 包括壓縮形式的應用程序的一部分。

+0

感謝您的回覆,我沒有測試它,但它聽起來很有前途:)也許你會看看[這個](http://stackoverflow.com/questions/14998325/why-do-i-get- a-ref-object-back-when-calling-a-refrence)呢? – seba 2013-03-08 08:05:17

-1

您必須將所有類放入一個js文件並加載該文件(只需將所有單個文件中的代碼複製並粘貼到新文件中,並將其命名爲App.employee.js)。 無法在一個Ajax請求中加載多個文件,因此加載器無法幫助您。

查看Ext docs for details on the loader

FYI:

分機使用CamelCase命名的類和命名空間。他們的名字空間都以小寫字母開頭,他們的類都以大寫字母開頭。這使得區分這兩種類型變得更容易。 建議遵循該約定。更多關於這個的可以找到here

+0

您可以使用Ajax請求加載任何文件嗎?據我所知,由於ajax請求的頭部信息,這根本不可能?或者這隻適用於如果我也想在本地保存文件?無論如何,我已經嘗試了你的建議,並且正如我在我的問題中寫的,我最終發現錯誤是沒有名爲App.Employee的類,這是正確的,因爲它只是一個名稱空間。 – seba 2013-03-04 07:22:49

1

您可以在一個文件/App/employee.js中收集所有名稱空間App.Employee。*,然後在需要時使用文件完整路徑加載它。

Ext.require("/App/employee") 

UPD。我也發現了一些問題。 Ext.loader不等待employee.js。當employee.js中的類具有依賴關係時,它會拋出異常。代替 嘗試Ext.syncRequire("/App/employee")。它在我的測試中運行良好。

並且不要忘記聲明文件的完整路徑(從您的webroot)。

+0

哦,我不知道我可以這樣要求一個文件,並停止負載尋找名爲文件+命名空間的類。我會試試這個。我這個工作可能正是我所期待的! – seba 2013-03-05 09:13:21

+0

這不起作用。ExtJS正在尋找一個類似於給定路徑的類,但它只是名稱空間,所以沒有類。 -1如果我誤會告訴我我錯在哪裏,或者修復了您的答案 – seba 2013-03-07 14:16:28

+0

我不會測試您的編輯原因@AlexanderTokarev提供了我正在查找的答案(但未經測試),但是我將刪除我的downvote。 – seba 2013-03-08 08:04:07

相關問題