我正在使用基於ExtJS 3的視圖維護Zend應用程序。最近,我正在遷移到基於ExtJS 4 MVC的應用程序。ExtJs 4 +部署時的PHP - 類加載
背景
隨着ExtJS的3我用結合的ExtJS庫+我所有的JS文件,包括在Zend的佈局(我們稱之爲combine.js)。
<script type="text/javascript" src="combine.js"></script>
我所需要做的就是滿足組合文件中的依賴關係。
現在,試圖用Zend生成我的視圖來完成ExtJS 4 MVC方法,但我遇到了新的Ext.Loader帶來的多個問題。我的Zend佈局由
<script type="text/javascript">
Ext.application({
name: 'demo',
appFolder: 'app',
controllers: [
// controllers list here
],
launch: function()
{
// viewport + page items
}
});
</script>
而且,在HEAD部分我仍然堅持同樣的方法,包括一個組合文件(ExtJS的4 +庫我所有的js文件)。從理論上講,我將所有的js依賴都滿足了,因爲我在我的代碼之前包含了整個庫。
問題
我遇到了許多問題與新的類加載機制。 假設我只有一個控制器,一個視圖和一個商店的ExtJS的一面:
GET http://myPage/demo/myModule/store/MyStore.js?_dc=1390226857962 404 (Not Found)
禁用分機:
Ext.define('demo.myModule.controller.MyGrid', function() {
extend: 'Ext.app.Controller',
stores: [ 'demo.myModule.store.MyStore' ],
views: [ 'demo.myModule.view.MyStore' ]
...
});
渲染這樣的頁面Ext.Loader試圖獲取不存在的資源最終.Loader結束了:
Uncaught Error: Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class: demo.myModule.controller.MyGrid
由於ExtJS的4是一個非常受歡迎的庫,一定有人之前擊中同一絆腳石。解決這個問題的正確方法是什麼? 順便說一句。我問這個問題已經花了幾天時間在ExtJS文檔+官方教程上,嘗試了Sencha CMD,但是我沒有得到確切的問題。
編輯: 我已經添加了一個示例項目,顯示問題:https://github.com/mirfilip/extjs-zend。您可以看到包含簡單類demo.myModule.view.Panel的app.js。在application/layouts/scripts/layout.phtml中,您可以看到整個庫+ app.js已加載(按順序)。當你嘗試渲染項目時,它會顯示空白頁面。但是,如果你去佈局並取消註釋第23-33行(並註釋掉第11行中app.js的附加內容)並進行渲染,則效果很好。唯一的區別是我的類被定義在哪裏。在類之間不應該有可能的時間競爭,因爲Ext.application的創建被包裝在Ext.onReady中。有任何想法嗎 ?
我不使用Zend Studio作爲IDE。如果我正確地理解了你,這就是你所做的: 1.用你的第一個片段創建.html文件(我認爲ext-dev.js是框架,app.js是你的代碼)。 2.將Sencha CMD指向該.html,它編譯爲第二個片段。然後你將這個片段包含在你的框架的入口點(在我的例子中是Zend Layout)。 所以底線是創建一個包含庫+我的JavaScript代碼的臨時.html文件,在其上運行Sencha CMD,生成新的css&js文件,並將它們包含在您的框架中。我能理解嗎? –
是的,你明白了。唯一的事情是,app.js不是你的想法。我編輯了這篇文章,以更好地解釋。 –
謝謝你,這個想法現在對我來說似乎更清楚了。我一定會嘗試它並回到這裏。謝謝。 –