扩展 Dojo 模块
2016-08-10 21:03
393 查看
扩展 Dojo 模块
在 Dojo 中,定义一个新的模块是很容易的。我们来看一个简单的例子,假设我们要创建的新模块是 util.math.Calculator。先在 Dojo 安装目录下创建目录 util/math在目录 util/math 下,创建一个叫 Calculator.js 的文件,在该文件中写入清单 4 所示的代码。
清单 4. Calculator.js
// 注册模块名 dojo.provide("util.math.Calculator"); // 声明 Dojo 类 dojo.declare("util.math.Calculator",null,{ add:function(a,b){ return a+b; }, multiply:function(a,b){ return a*b; } });
现在你就可以开始使用这个新的模块了,代码如清单 5 所示。
清单 5. 使用新模块
dojo.require("util.math.Calculator"); var c=new util.math.Calculator(); alert(c.add(1,2)); alert(c.multiply(3,2));
<!doctype html> <html lang="en" dir="ltr"> <head> <title>Dijit</title> <link rel="stylesheet" href="dijit/themes/claro/claro.css" /> <style type="text/css"> body, html { font-family:helvetica,arial,sans-serif; font-size:90%; } </style> <script src="dojo/dojo.js" djConfig="parseOnLoad:true"></script> <script> dojo.require("dojo.parser"); dojo.require("util.math.Calculator"); dojo.addOnLoad(function() { var c=new util.math.Calculator(); alert(c.add(1,2)); alert(c.multiply(3,2)); }); </script> </head> <body class="claro"> </body> </html>
在清单 4 中,出现了 dojo.provide 和 dojo.declare 函数。dojo.provide 的功能是向 dojo 模块注册表中注册一个新的模块,dojo.declare 则是用来声明模块中的类。通过这个例子可以看出,在 Dojo 中创建一个新的模块是非常简单的。现在让我们来对清单 4 中的代码作些扩展,在 Calculator.js 中加入清单 6 中的代码。
清单 6. 扩展 Calculator
util.math.Calculator.subtract=function(a,b){ return a-b; }; dojo.declare("util.math.Calculator2",null,{ subtract:function(a,b){ return a-b; } }); dojo.declare("a.b",null,{ hello:function(){ alert("Hello"); } });
新的测试代码如清单 7 所示:
清单 7. 测试代码
dojo.require("util.math.Calculator"); alert((new util.math.Calculator()).add(1,2)); alert((new util.math.Calculator2()).subtract(10,5)); alert(util.math.Calculator.subtract(10,5)); (new a.b()).hello();
<!doctype html> <html lang="en" dir="ltr"> <head> <title>Dijit</title> <link rel="stylesheet" href="dijit/themes/claro/claro.css" /> <style type="text/css"> body, html { font-family:helvetica,arial,sans-serif; font-size:90%; } </style> <script src="dojo/dojo.js" djConfig="parseOnLoad:true"></script> <script> dojo.require("dojo.parser"); dojo.require("util.math.Calculator"); dojo.addOnLoad(function() { alert((new util.math.Calculator()).add(1,2)); alert((new util.math.Calculator2()).subtract(10,1)); alert(util.math.Calculator.subtract(10,5)); (new a.b()).hello(); }); </script> </head> <body class="claro"> </body> </html>
通过这个小修改,我们可以发现很多有趣的现象。第一,在一个模块中,不但可以定义 Dojo 类,还可以定义一个普通的函数,如本例中的 util.math.Calculator.subtract,这与 java 中的包是不一样的,java 的包中只能定义类;第二,在一个模块中,可以定义多个 Dojo 类,如本例中的 util.math.Calculator2 与 a.b,这与 java 的包类似;第三,模块的名字与 Dojo 中类的命名实际上没有必然的联系,两者在语法上并没有一致性的要求,但从代码的可维护性来考虑,建议保持模块名字与实际的类名一致。
Calculator.js
// 注册模块名
dojo.provide("util.math.Calculator");
// 声明 Dojo 类
dojo.declare("util.math.Calculator",null,{
add:function(a,b){
return a+b;
},
multiply:function(a,b){
return a*b;
}
});
util.math.Calculator.subtract=function(a,b){
return a-b;
};
dojo.declare("util.math.Calculator2",null,{
subtract:function(a,b){
return a-b;
}
});
dojo.declare("a.b",null,{
hello:function(){
alert("Hello");
}
});
相关文章推荐
- PHP扩展模块Memcache Redis Mssql部署
- Linux下独立添加PHP扩展模块mbstring
- C语言扩展Apache模块开发入门篇
- 如何开启PHP的PDO扩展模块
- Nginx 模块推荐 Session 粘连和扩展失败测试
- Python 数据处理扩展包: pandas 模块的DataFrame介绍(创建和基本操作)
- 两步实现将jquery作为Dojo的一个模块使用
- php 的rabbitmq 扩展模块amqp安装
- php扩展redis模块安装
- -gMIS扩展功能模块开发参考/ext modules
- OpenCV 3.1.0编译与添加扩展模块
- Linux里的防火墙(下):iptables的扩展模块——l7-filter的安装与功能实现
- apache安装扩展模块
- AngularJS系列——扩展模块-动画、表单验证、路由
- php动态扩展bcmath与sockets库模块
- 建立可扩展的silverlight 应用框架 step-6:整理导航模块“LeftNav”
- 快速实现python c扩展模块
- ASP.NET 运行时 可扩展 可配置 权限控制 模块
- 利用C++ Boost编写扩展Python模块
- intellij idea 中Python模块的扩展之读写excel文件的扩展