命名空间(namespace)是Extjs组织代码的一个非常精巧的方式。通过这一方式,可以将数量庞大的js代码分类到不同的命名空间下,可以有效地解决js容易产生变量冲突的问题,让不同命名空间下的变量和对象的取名更自由而不受同名的约束。下面看看命名空间应用的例子 Ext.namespace("App.common.util");
App.common.util.MyFormValidater = function(){
//your code here.
}
App.common.util.DataGetter = function(){
//your code here.
}
.............
:从上面例子可以看出,一个字符串("App.common.util"),经过Ext.namespace处理之后,便能像正常的js代码对象一样可以任意的添加属性(MyFormValidater 、DataGetter )。到底是什么动作可以产生这样的效果呢。看源代码(以下代码出自3.2版本):namespace : function(){
var o, d;
Ext.each(arguments, function(v) {
d = v.split(".");//以点分开字符串,得到字符串数组
o = window[d[0]] = window[d[0]] || {};//将第一个字符串数组第一个字符串作为window对象的一个属性
/××依次地将字符串数组中的下一个字符串作为上一个字符串对应的对象(已经处理过)的属性*/
Ext.each(d.slice(1), function(v2){
o = o[v2] = o[v2] || {};
});
});
return o;
}
经过上面的处理之后,我们上面的例子代码实际上等效于:
window['App'] = {};
window['App'] ['common'] = {};
window['App'] ['common'] ['util']= {};
由于window是一个全局对象,所以:
App = {};
App.common = {};
App.common.util = {}
由上面的分析,命名空间其实就是window全局对象下面的各个对象树(还可以定义App.common.form等等)
分享到:
相关推荐
- **模块化**:使用ExtNs的命名空间(Namespace)和类系统,将代码划分为独立的模块,避免全局变量污染。 - **异步加载**:利用Ext.Ajax或Ext.data.Store进行异步数据请求,提高页面响应速度。 - **组件化**:...
Ext.namespace('demo'); demo.User = Ext.extend(Ext.Panel, { getName: function() { // 实现方法 } }); ``` - **组件复用**:ExtJS本身就是围绕组件的复用性设计的。开发者可以通过继承已有的组件来快速...
<package name="extjs" extends="json-default" namespace="/"> <result type="json"></result> ``` ### 5. HTML与ExtJS集成 `login.jsp`页面是用户与应用交互的第一线,它包含了对ExtJS样式表和脚本的引用...
`Ext.namespace`是Extjs中的一个方法,用于定义命名空间。命名空间是一种组织代码的方式,避免全局变量污染,并允许在不同模块间共享资源。例如,在代码中出现的`Ext.namespace('com.faceye.layout');`就是创建了一...
[WebService(Namespace = "http://example.com/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class DropDownService : System.Web.Services.WebService { [WebMethod] public ...
7. **Ext.namespace()**: 创建命名空间,用于组织和隔离代码,避免全局变量冲突。例如,你可以创建`Company`、`MyNS.mydata`和`Data.format.string`这样的命名空间。 8. **Ext.urlEncode()** 和 **Ext.urlDecode()*...
<package name="tree" namespace="/tree" extends="json-default"> <param name="root">nodes ``` 4. **创建ExtJs TreePanel** 在前端,使用ExtJs创建TreePanel,并配置它的store指向Struts2 Action...
<package name="upload" namespace="/" extends="struts-default"> <param name="maximumSize">1048576</param> <!-- 1MB --> <param name="allowedTypes">image/jpeg,image/png,application/pdf ...
1. **命名空间**:EXTJS通过命名空间(namespace)来组织代码,避免了全局变量的冲突,提高了代码的可维护性和可读性。命名空间可以看作是JavaScript中的对象,用于存储相关的类和函数。 2. **类系统**:EXTJS的类...
6.2.8 Ext.namespace() 6.2.9 Ext.each() 6.2.1 0Ext.apply() 6.2.1 1Ext.encode() 6.2.1 2Ext.htmlDecode() 6.2.1 3Ext.typeOf() 6.3 Ext.core.DomHelper 6.3.1 Ext.core.DomHepler.append() ...
我们将学习如何使用ExtJS的Application类和Namespace管理,以及如何使用构建工具(如Sencha CMD)来编译和优化代码。 总结来说,"深入浅出ExtJS(part5,6)"涵盖了ExtJS的核心组件、数据绑定、MVC架构以及性能优化等...
<package name="extjs" extends="json-default" namespace="/"> <action name="Login" class="cn.extjs.action.LoginAction"> ``` 这里,`cn.extjs.action.LoginAction` 是你的 Action 类,它会处理来自...
<package name="default" namespace="/" extends="struts-default"> <result type="json"></result> ``` 通过以上步骤,我们就实现了EXTJS与Struts2的集成,以及基于它们的数据分页功能。这个简单的例子展示了...
<package name="attachment" namespace="/" extends="struts-default"> <result name="query">/WEB-INF/jsp/attachment.jsp <result name="save">/WEB-INF/jsp/attachment.jsp <result name="delete">/...
- 使用`Ext.namespace`方法来定义命名空间。 - **Extjs OOP** - Extjs提供了一套面向对象的编程模型,支持类的继承、封装等特性。 - 通过`Ext.extend`和`Ext.override`方法可以实现类的继承和重写。 - **配置...
- `namespace`: 命名空间。 - `mainclass`: 主类。 综上所述,这个案例综合运用了Spring MVC、MyBatis、ExtJS 3.4以及Oracle数据库等多种技术手段,实现了一个完整的权限管理系统,为进销存产品的开发提供了一个...
- **示例**: `Ext.namespace('MyApp.view', 'MyApp.model')` 定义了两个命名空间。 **2.3 Extjs OOP 特性** - **继承**: 通过 `extend` 属性实现类的继承。 - **配置**: 使用 `config` 对象来传递配置选项。 **...