本文地址:[http://blog.csdn.net/sushengmiyan/article/details/42940883](http://blog.csdn.net/sushengmiyan/article/details/42940883)
本文作者:[sushengmiyan](http://blog.csdn.net/sushengmiyan)
------------------------------------------------------------------------------------------------------------------------------------
使用sencha cmd build app 生成的工程,我們期望只使用cmd打包好之后的那一個壓縮后的js,而不用將體積龐大的所有ext代碼都部署。
試了一下ext的官方例子,打包之后,我們使用build\production\yourappname 目錄下的文件都可以了。將這個目錄下的文件部署到tomcat下,增加WEBINFO和下面的web.xml文件。啟動tomcat.
使用cmd生成默認的例子,部署了一下,發現可以正常運行。
總結一下:使用純凈的ext產生的文件,使用cmd打包之后,將所有文件都壓縮了,在沒有涉及到后臺交互的情況下,直接將build下那個工程的文件拷貝到tomcat即可正常運行你所編寫的程序,而且這樣,也不會將你的源代碼直接發布。
提交一個部署中遇到的問題,打包之后,發布到tomcat 啟動報錯,內容如下:
~~~
NetworkError: 404 Not Found -
http://localhost:8080/extoa/.js?doc=142183145561
TypeError: c is not a constructor
return new c(a[0])
~~~

深入查看后,發現問題出在我使用了ext.define動態去創建類,但是這個類又不在我本地硬盤上有對應的js文件,cmd打包的時候又要根據這個define的路徑去找我的類,結果就沒有找到,于是加載 空.js 所以會報錯。錯誤示例代碼如下:
~~~
getModelByViewModel: function(viewModelConfig) {
var me = this;
var modelClass = 'oaSystem.model.auto.' + viewModelConfig.data.modelName;
return Ext.ClassManager.get(modelClass) || Ext.define(modelClass, {
extend: 'Ext.data.Model',
idProperty: viewModelConfig.data.primaryKey, // 設置模塊model的主鍵
nameFields: viewModelConfig.data.nameField, // 設置模塊model的名稱字段
identifier: viewModelConfig.data.keygenType, // 設置模塊model的主鍵生成方式
fields: me.getModelFields(viewModelConfig.data.fields), // 設置字段
// 取得主鍵值
getIdValue: function () {
return this.get(this.idProperty);
},
// 取得當前記錄的名字字段
getNameValue: function () {
if (this.nameFields)
return this.get(this.nameFields);
else
return null;
}
})
},
~~~
modelClass為動態獲取,動態創建這個類,cmd打包之后,根據這個類名去找js文件,結果沒有找到。所以報錯
在不打包的情況下,這個方法是可行的...
解決方法暫時想到使用集合方式,如下:
~~~
dataModels: new Ext.util.MixedCollection,//鍵值對集合,可以集合json數據
//1. 通過data中fields配置生成一個DataModel
getModelByViewModel: function(viewModelConfig) {
console.log('11111 im here come to catche me!');
var me = this;
if (viewModelConfig)
{
}else
viewModelConfig = this.viewModelConfig;
var modelClass = 'oaSystem.model.auto.' + viewModelConfig.data.modelName;
//var modelClassAlias = viewModelConfig.data.modelName;
//debugger;
if (this.dataModels.get(modelClass)){
return this.dataModels.get(modelClass)
}else{
console.log('ccc im here come to catche me!');
var abc = Ext.widget('modeldatamodel', {
idProperty: viewModelConfig.data.primaryKey, // 設置模塊model的主鍵
nameFields: viewModelConfig.data.nameField, // 設置模塊model的名稱字段
identifier: viewModelConfig.data.keygenType, // 設置模塊model的主鍵生成方式
fields: me.getModelFields(viewModelConfig.data.fields) // 設置字段
});
this.dataModels.add(modelClass,abc);
return abc;
}
},
~~~
這樣cmd再打包就不會出錯了,先定義一個oaSystem.model.DataModel這個基類。然后判斷是否存在再生成。
- 前言
- [EXtJS5學習筆記]第一節 Sencha Cmd 學習筆記 簡介 Sencha Cmd是什么
- [ExtJS5學習筆記]第二節 Sencha Cmd 學習筆記 使你的sencha cmd跑起來
- [ExtJS5學習筆記]第三節 sencha cmd學習筆記 生成應用程序構建的內部細節
- [ExtJS5學習筆記]第四節 歡迎來到extjs5-手把手教你實現你的第一個應用
- [ExtJS5學習筆記]第五節 使用fontawesome給你的extjs5應用增加字體圖標
- [ExtJS5學習筆記]第六節 Extjs的類系統Class System命名規則及定義和調試
- [ExtJS5學習筆記]第七節 Extjs5的組件components及其模板事件方法學習
- [ExtJS5學習筆記]第八節 Extjs5的Ext.toolbar.Toolbar工具條組件及其應用
- [ExtJS5學習筆記]第九節 Extjs5的mvc與mvvm框架結構簡介
- [ExtJS5學習筆記]第十節 Extjs5新增特性之ViewModel和DataBinding
- [ExtJS5學習筆記]第十一節 Extjs5MVVM模式下系統登錄實例
- [ExtJS5學習筆記]第十二節 Extjs5開發遇到的問題列表記錄
- [ExtJS5學習筆記]第十三節 Extjs5的Ext.each方法學習
- [ExtJS5學習筆記]第十四節 Extjs5中data數據源store和datapanel學習
- [ExtJS5學習筆記]第十五節 Extjs5表格顯示不友好?panel的frame屬性在作怪
- [ExtJS5學習筆記]第十六節 Extjs5使用panel新增的ViewModel屬性綁定數據
- [ExtJS5學習筆記]第十七節 Extjs5的panel組件增加accodion成為折疊導航欄
- [ExtJS5學習筆記]第十八節 Extjs5的panel的dockeditems屬性配置toolbar
- [ExtJS5學習筆記]第十九節 Extjs5中通過設置form.Panel的FieldSet集合屬性控制多個field集合
- [ExtJS5學習筆記]第二十節 Extjs5配合數組的push方法,動態創建并加載組件
- [ExtJS5學習筆記]第二十一節 Extjs5中使用config配置給ext.widget或者create方法傳遞參數
- [ExtJS5學習筆記]第二十二節 Extjs5中使用beforeLabelTpl配置給標簽增加必填選項星號標志
- [ExtJS5學習筆記]第二十三節 Extjs5中表格gridpanel的列格式設置
- [ExtJS5學習筆記]第二十四節 Extjs5中表格gridpanel或者表單數據后臺傳輸remoteFilter設置
- [ExtJS5學習筆記]第二十五節 利用window.open()函數實現ExtJS5的登陸頁面跳轉
- [EXTJS5學習筆記]第二十六節 在eclipse/myeclipse中使用sencha extjs的插件
- [ExtJS5學習筆記]第二十七節 CMD打包錯誤 Error C2009: YUI Parse Error (identifier is a reserved word => debugger;)
- [ExtJS5學習筆記]第二十八節 sencha ext js 5.1.0發布版本正式發布 extjs doc下載地址
- [ExtJS5學習筆記]第二十九節 sencha ext js 5.1.0中動態更換皮膚主題
- [ExtJS5學習筆記]第三十節 sencha extjs 5表格gridpanel分組匯總
- [ExtJS5學習筆記]第三十一節 sencha extjs 5使用cmd生成的工程部署到tomcat服務器
- [ExtJS5學習筆記]第三十二節 sencha extjs 5與struts2的ajax交互配置
- [ExtJS5學習筆記]第三十五節 sencha extjs 5 組件查詢方法總結