浅议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
# 采用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
相关文章推荐
- JSON之生成JSON字符串和解析
- JS截取字符串substr 和 substring方法的区别
- JavaScript DOM学习总结(一)
- 使用JSONModel小记
- 慕课网JavaScript编程练习
- HTML+CSS+JavaScript
- javascript之this关键字
- JSP通过IP获取用户(客户端)的地理位置信息
- Highcharts ajax获取json对象动态生成报表生成 .
- JSON解析--以百度天气为例
- 安装expressjs后,查看express -V出现不是内部或外部命令
- JavaScript面向对象
- JavaScript包装对象
- JavaScript作用域链
- JS的'=='、'==='、'!='、'!=='及数字字符串的'-'操作
- JSR规范整理(整理中......)
- JSP获取客户端的IP地址的方法
- 南大软院大神养成计划--js
- JSP基础——创建、启动、浏览项目
- js控制密码的显示与隐藏实例