在開始學習sencha touch 時看到sencha touch竟然有如此多的組建,真方便,幾乎趕上了ASP.NET里面的那些拖拉彈唱的組建,這恐怕要和當年學習ASP.NET一樣學組建就要學上好長時間,以前學習這些組建的記憶浮現的腦海中。。。。。。。。。。。。。。。。。。。。。。
(ps:若干年后發現,學習這些東西是人生中最傻的決定,),所以在這個地方跌倒過一次,這次就繞過去
sencha touch 之所以優秀,幾乎可以和jquery分庭抗禮,是為什么呢?因為他有很多組建?因為他有很多插件?因為他的api很好用?(ps:個人感覺sencha touch 組建不多,插件不多,api也不好用),個人認為是因為sencha touch有自己強大的類機制。
http://docs.sencha.com/touch/2.2.0/#!/api 看看這么多組建
sencha touch 的基礎----類
sencha touch 之所以強大是因為sencha touch 有一套自己的類機制,可以以面向對象的方式去寫代碼,封裝業務邏輯,sencha touch 的組建、插件、api等都建立在這一套類機制的上面
幫助文檔中對類系統進行的介紹
http://docs.sencha.com/touch/2.2.0/#!/guide/class_system
和類相關的基本類
http://docs.sencha.com/touch/2.2.0/#!/api/Ext.ClassManager
作為學習sencha touch 簡單了解一下就好了
首先定義一個類的語法:Ext.define(className, properties);
Ext.define('Person', { //字段 name: 'Unknown', //構造函數 constructor: function(name) { if (name) { this.name = name; } return this; }, //方法 eat: function(foodType) { alert("I'm eating: " + foodType); //返回自己,方便像jquery一樣寫代碼 return this; } });
然后創建一個類的實例或實例化一個類,這個有很多方法,例如
var aaron = new Person("Aaron");
Ext.create('cnblogs.view.Main');Ext.create("cnblogs.store.feedlist") 等方法
在sencha touch 中一不小心就忘記了把類實例化,總認為sencha touch 為自動實例化我要用的類。。。。
我知道的這些東西會自動載入,並實例化類的 代碼
requires: [
'Ext.MessageBox',
'Ext.data.proxy.JsonP',
'Ext.dataview.List'
],
views: [
'Main','cnblogs.view.blogsinfo'
],
models:[
'cnblogs.model.feedlist'
],
stores:[
'cnblogs.store.feedlist'
],
而且可以繼承一個類 例如繼承Person這個類,在sencha touch中開始用的比較多的也是繼承一個類
Ext.define('Developer', { extend: 'Person', constructor: function(name, isGeek) { this.isGeek = isGeek; // Apply a method from the parent class' prototype this.callParent([name]); return this; }, code: function(language) { alert("I'm coding in: " + language); this.eat("Bugs"); return this; } });
類了解這些基本就行了,(ps:我也只了解這些)
項目結構
不會生成項目的點擊 這里
關於項目結構的詳細介紹 http://docs.sencha.com/touch/2.2.0/#!/guide/command_app
app.js里面的代碼 一般都是這樣的
Ext.Loader.setPath({
'Ext': 'touch/src',
'cnblogs': 'app'
//設置sdk的目錄,就是下載的sencha touch 的源碼如果是自動生成項目這里就配置好了
});
//</debug>
//定義項目
Ext.application({
name: 'cnblogs',
requires: [ //requires 用來載入這些依賴的類
'Ext.MessageBox',
'Ext.data.proxy.JsonP',
'Ext.dataview.List'
],
views: [ //views 用來載入依賴的視圖
'Main','cnblogs.view.blogsinfo'
],
models:[
'cnblogs.model.feedlist'
],
stores:[
'cnblogs.store.feedlist'
],
icon: {
'57': 'resources/icons/Icon.png',
'72': 'resources/icons/Icon~ipad.png',
'114': 'resources/icons/Icon@2x.png',
'144': 'resources/icons/Icon~ipad@2x.png'
},
isIconPrecomposed: true,
startupImage: {
'320x460': 'resources/startup/320x460.jpg',
'640x920': 'resources/startup/640x920.png',
'768x1004': 'resources/startup/768x1004.png',
'748x1024': 'resources/startup/748x1024.png',
'1536x2008': 'resources/startup/1536x2008.png',
'1496x2048': 'resources/startup/1496x2048.png'
},
launch: function() { //所有依賴載入完畢,開始啟動項目
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
Ext.Viewport.main=Ext.create('cnblogs.view.Main');
Ext.Viewport.add(Ext.Viewport.main);
},
onUpdated: function() {
Ext.Msg.confirm(
"Application Update",
"This application has just successfully been updated to the latest version. Reload now?",
function(buttonId) {
if (buttonId === 'yes') {
window.location.reload();
}
}
);
}
});

