sencha touch 學習筆記- 基礎中的基礎(類和項目結構)(2013網頁裝在兜里)


在開始學習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

 

image

 

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();
                }
            }
        );
    }
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM