投放本站广告请联系:
extjscn#126.com
Sencha架构解读
sencha是移动端的html5框架,可以用来制作跨平台的app应用。sencha内部利用mvc结构,使得整个框架在使用时能够保持代码的整洁,也易于测试和修改。
一个 sencha app是一个由model,controller,view,store,profile,再加上一些静态资源,例如:app的图标,加载页面图片等组成的集合
models:表明了app的类型,比如,电子商务型的app应该有 用户,产品,订单等模块
views:负责想用户展示数据,使用sencha 内部已有的组件
controllers:处理内部各部分之间联系,监听用户的点击、滑动并采取相应行动
store:负责加载数据,增强里内部组件的能力,如Lists和DataViews
Profile:能够在公用尽量多的代码的同时,很便利的优化app在平板和手机的UI
建立一个app通常要做的第一件事就是定义application,如下
Ext.application({ name: 'MyApp', models: ['User', 'Product', 'nested.Order'], views: ['OrderList', 'OrderDetail', 'Main'], controllers: ['Orders'], launch: function() { Ext.create('MyApp.view.Main'); } });
上面代码中,name主要的作用是定义命名空间,所有的models,views,controllers和其他的类,都会在这个命名下。如上面,所有的子类的命名都遵循MyApp.model.User的规则。这样可以保证整个app在一个命名空间下,降低了与其他代码冲突的可能
当你执行生成app工程命令时,分配好的文件夹中就已经有model,controller,view等文件夹,把文件放在文件夹里分类好,调用时按上面规则写就ok了
controller简单的例子:
Ext.define('MyApp.controller.Sessions', { extend: 'Ext.app.Controller', config: { refs: { loginForm: 'formpanel' }, control: { 'formpanel button': { tap: 'doLogin' } } }, doLogin: function() { var form = this.getLoginForm(), values = form.getValues(); MyApp.authenticate(values); } });
这个controller名为Sessions,所有的controller都继承于Ext.app.Controller。上面例子里有2中配置属性:refs和control。refs能够非常简单的找到页面中所用的组件(sencha内部定义的);上面的代码中loginForm将会是所有的xtype为formpanel的组件中的第一个。
control配置属性,用ComponetQuery选择器找到所有xtype为formpanel的并且包含button组件的组件,无论何时任何一个button被触发了tap事件,doLogin就会被调用
doLogin函数中,getLoginForm是在定义refs中的loginForm后自动形成。得到form的相关信息后,只需要把表的值拿出来传给一个authenticate函数就行了。authenticate做了什么呢?其实就是一个ajax验证,及callback函数
未完,待续。。。
作者: lide
原文: http://blog.chukong-inc.com/index.php/2013/02/01/sencha%E6%9E%B6%E6%9E%84%E8%A7%A3%E8%AF%BB/#codesyntax_1
- 关键字:
- 要发表评论,请先登录