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();
                }
            }
        );
    }
});
posted @ 2013-04-29 10:58  互联网Fans  阅读(3075)  评论(5编辑  收藏  举报