您的位置:首页 > Web前端 > JavaScript

浅议ExtJS-5.0的特性

2015-11-25 21:58 507 查看
ExtJS5

# 采用MVVM,应用ViewModel与DataBind,声明式风格,关注点分离

# 有点像Spring框架,开发人员关注各种对象(Model,Store,View,ViewModel,ViewController),

而这些对象怎么交互和协作,统一交由ExtJS来处理

# Sencha CMD是一个命令行工具,管理一个Ext项目的生命周期。它可以创建(genenrate), 编译build, 监听watch

# 一个Model描述一个实体对象,主要包括名称,字段类型;此外还可以有数据的逻辑:如校验,类型转换等

# 一个Store通常包含Model(数据的格式),Proxy(数据怎么获取),Reader(数据怎么转换)

# 一个View通常代表一个组件(Component),如Grid, Tree, Panel, Container以及ViewPort, 这些组件均可作为View的实例

# 一个ViewModel服务于特定的View,为View提供合适的数据

# 一个ViewController服务于特定的View,为该View监听事件,在回调函数中实现业务逻辑

# View通过viewModel属性把ViewModel粘合进来,在View中可以指定bind属性,提取ViewModel中的绑定内容

# View通过controller属性把ViewController粘合进来,ViewController与View是一对一关系,

ViewController的生命周期与View是一致的,View销毁,则ViewController也随之销毁

# ExtJS5使用Ext.define(...)定义子类,使用Ext.create(...)创建实例,

这样做可以延迟并按需加载所需组件,解决框架启动时的性能,以后就不要使用new关键字来创建对象

# ExtJS5的事件监听函数中,获取当前View中其他组件的新方法,

是在目标组件上定义一个reference属性,然后监听函数使用lookupReference函数得到,这一点

比基于id属性的Ext.getCmp()更稳定, 因为你在大团队项目中无法保证id的选择不重复

比基于itemId的refs查询速度更快,因为它不经过查询,它使用的是内部注册与缓存机制

# bind动态绑定高于静态设置,比如一个Component的title,既设置有静态值,也有bind绑定,最终bind获胜

# ViewModel除了提供data属性供View进行bind之外,还提供formulas属性对data进行二次构造,

类似富血对象的设计,以便让View能专注于展示结构

# 尽量给每个子View分派子ViewModel,而不要把所有数据都堆放在父ViewModel中,

这样当该子View销毁的时候,子ViewModel中的数据也能随之释放。

当然这要求子ViewModel中的数据只对子View是有用的。

假如多个View共用一个ViewModel,新创建的View实例会生成一个新的ViewController、ViewModel,所以通过ViewModel.getStore(),会得到不同的Store。

# 在基于ExtJS5的单页面应用中,用户切换浏览器的前进后退按钮时,Ext实际上是通过解析URL中的hash段的变化来识别。

原文地址:http://blog.csdn.net/robinsone/article/details/45872605
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: