本文仅对Ext JS进行一简单说明,下文将提供一"Hello world"事例.
创建一Ext JS项目非常简单,创建一个index.html文件,然后引入ExtJs相关的Javascript和CSS,本文从ExtJs的CDN服务器引用了相关文件.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Welcome to Ext JS!</title>
<link rel="stylesheet" type="text/css" href="http://cdn.sencha.com/ext/gpl/5.0.0/build/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all.css">
<script type="text/javascript" src="http://cdn.sencha.com/ext/gpl/5.0.0/build/ext-all.js"></script>
<script type ="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
其它Javascript库,像Jquery,AngularJs在使用时一般和HTML标签混用,ExtJs使用了别一种方法,你仅仅使用Javascript和ExtJs内部类,即可完成Web应用程序的开发.下面代码片段即可创建一个Panel.
Ext.create('Ext.Panel', {
renderTo : Ext.getBody(),
width : 200,
height : 150,
bodyPadding : 5,
title : 'Hello World',
html : 'Hello <b>World</b>...'
});
我们把上面代码保存到app.js文件中,仅仅这么做,可能会创建失败,因为ExtJs框架加载完成后才能使用相应的类.为了避免这个错误可以使用launch()事件函数,此函数将在框架加载完成后被触发.
我们将上面代码放到Ext.application的launch()函数中.
最终的app.js如下所示:
Ext.application({
name : 'MyApp',
launch : function() {
Ext.create('Ext.Panel', {
renderTo : Ext.getBody(),
width : 200,
height : 150,
bodyPadding : 5,
title : 'Hello World',
html : 'Hello <b>World</b>...'
});
}
});
用浏览器打开index.html,你将看到如下页面:
这个示例仅仅教你怎样开始使用ExtJs,你可以查看更多ExtJs官方示例,那里有更多示例,及说明.
你应该已经注意到Hello world示例中引入了ext-all.js和ext-theme-neptune.css两个CDN文件,这两个文件包含了整个ExtJs框架.这种方法仅适用于学习或实验性质.在发布的产品中,你可能仅需要部分功能,或某些功能使用时再加载.这就需要把ExtJs分隔成多个包含独立功能的小文件.
对于如何创建ExtJs应用,官方还推荐了Sencha Cmd . 功能非常强大,你可以去ExtJs官方开发向导查看更多内容.
下文将对ExtJs做一简单剖析.
ExtJs应用使用面向对象的思想开发,两个最关键的东西就是类与对象,每个对象是类的一个实例.
让我们创建另一个示例演示ExtJs的类系统,我们仍然使用index.html和app.js来讨论
我们可以创建一个自己的类,
Ext.define('MyApp.MyPanel', {
extend : 'Ext.Panel',
title : 'Hello World',
html : 'Hello <b>World</b>...'
});
使用上述代码,我们创建了一个新类"MyPanel",此类扩展了Panel,然后我们可以以此类为模板,创建MyPanel的实例.
可能你需要两个Panel,两个Panel只有文字不同.我们仅仅需要创建两个实例并赋于不同的文字即可.你的app.js中的代码将如下所示:
Ext.define('MyApp.MyPanel', {
extend : 'Ext.Panel',
width : 200,
height : 150,
bodyPadding : 5
});
Ext.application({
name : 'MyApp',
launch : function() {
Ext.create('MyApp.MyPanel', {
renderTo :Ext.getBody(),
title : '我的第一个面板',
html : '我的第一个面板'
});
Ext.create('MyApp.MyPanel', {
renderTo : Ext.getBody(),
title : '我的第二个面板',
html : '我的第二个面板'
});
}
});
用浏览器打开index.html你将看到两个内容不同的Panel.