1.可以使用alias来为组件添加别名,类似以前的Ext.reg,不过alias会用不同的类别区分开来,例如,widget.xxxxx和feature.xxxxx是不一样的,虽然它们都是用alias来定义的,但是类别完全不同。
2.包和命名空间的改变
现在的ExtJS不再使用混乱的分包机制(其实以前的感觉更加直白),例如以前的Window,包名是Ext.Window,但是现在则是Ext.window.Window,Ext.window包下还包括了Ext.window.MessageBox等。SplitButton则是Ext.button.Split。
3.创建新对象
现在ExtJS使用Ext.define函数来创建组件类,该函数还能实现自动加载js类(uses属性,需设置Ext.Loader为开启详见下文,看不懂看API),它会自动的完成以前的ns(namespace)功能。例如下面
Js代码
Ext.ns(“Foo.bar”);
Foo.bar = Ext.extend(Ext.util.Observable,{
//your code here
});
Ext.reg(“foobar”,Foo.bar);
所以现在创建一个组件应该是这样的:
Js代码
Ext.define(“Foo.bar”,{
extend : “xxxxxx”,
alias : “widget.foobar”
//your code here
});
现在ExtJS不再使用new关键字(当然你想用也没关系),而是推荐使用Ext.create函数来解决这个问题,例如以往我们创建一个组件的代码是
Js代码
var win = new Ext.Window({
//some options
});
而现在则是
Js代码
var win = Ext.create(“Ext.window.Window”,{
//some options
});
4.Ext.env.Browser
ExtJS3有Ext.isIE、Ext.isFF等方法判断浏览器,这次ExtJS4不仅仅保留了以前的函数,还提供了更为强大Ext.env包来干这些事情,这个包下面还有其他两个类:
Ext.env.OS,顾名思义判断操作系统的,还新增了一些操作系统(主要是移动领域的操作系统)
if (Ext.os.is.Windows) {
// Windows specific code here
}
if (Ext.os.is.iOS) {
// iPad, iPod, iPhone, etc.
}
5.Ext.env.FeatureDetector,这个是新加的,主要用于判断HTML5和CSS3的,例如
CSS3/动画/转换
Canvas/ SVG/ VML
触摸屏是否可用/方向
地理位置(html5的东西相信不陌生吧?)
SqlDatabase
WebSockets
History
音频
视频
6.Model代替了store的功能,store中一个变化就是baseParams变成了extraParams
Js代码
Ext.define(‘User’, {
extend: ‘Ext.data.Model’,
fields: [
{name: ‘name’, type: ‘string’},
{name: ‘age’, type: ‘int’}
]
});
Ext.create(“Ext.data.Store”,{
modal:”User”,
proxy{
url : “xxxx.do”,
type : “ajax”
}
})
7.Proxy中新增了一个localStorage(Ext.data.proxy.LocalStorage)用于过渡到Html5的localStorage等等。
Draw绘图
这个东西喜欢吗?我喜欢嘿嘿
ExtJS4中提供了绘图,夸浏览器的,它内部实现了Canvas、SVG、VML等绘图方法,所以不同的浏览器它会自动使用该浏览器支持的绘图方式。支持IE6789、基于Gecko的浏览器(FF)、基于WebKit内核的浏览器(Chrome)。
8.Lang包的修改
9.ExtJS4的senchaSDKtools里面还提供了theme的制作,ExtJS审美疲劳了可以换换这个。