DOJO 基本对象定义

前端之家收集整理的这篇文章主要介绍了DOJO 基本对象定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

DOJO 导入 基于AMD DOJO 配置 + 免费的CDN服务(不想用就下载DOJO使用自己的路径) 例如下


  1. <script>
  2. dojoConfig= {
  3. has: {
  4. "dojo-firebug": true
  5. },parSEOnLoad: false,foo: "bar",async: true
  6. };
  7. </script>
  8. <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js"></script>
DOJO 配置介绍

参考资料 http://dojotoolkit.org/documentation/tutorials/1.10/dojo_config/


dojoConfig 的配置文件一定要在dojo.js前面,虽然暂时还不知道这个配置里面有哪些东西,不过是基于requirejs的应该和 require.config({...}) 中有相似的部分 下面有待验证

配置项:

  • baseUrl: amd module js 根路径 同requirejs baseUrl
  • packages: 一个数组 提供了 包名和路径的映射
  • path: AMD module 名称和路径映射 参考requirejs config
  • async: 是否异步加载AMD module 可选值 true,false,legacyAsync(将 loader 永久地置为legacy cross-domain mode)
  • map :Allows you to map paths in module identifiers to different paths

  1. map: {
  2. // Instead of having to type "dojo/domReady!",we just want "ready!" instead
  3. "*": {
  4. ready: "dojo/domReady"
  5. }
  6. }
那么在引用dojo/domReady!的时候 就可以直接使用 require(['ready!']) 替代 require(['dojo/domReady!'])
  • parSEOnload: 当DOM 和所有的相关依赖都加在完毕的时候调用dojo/parser解析页面
  • deps: 一个数组资源 当dojo加载的时候 需要立即加载这些资源
  • callback: The callback to execute oncedepshave been retrieved
  • @H_301_90@waitSeconds: 加载AMD module 超@H_301_90@@H_301_90@时设定 默认是0 永不超时
  • @H_301_90@cacheBust:如果未true 可以防止 module @H_301_90@缓存 会在URL 上面添加时间戳

1. dojo 对象定义

  1. /**
  2. * 测试使用 类创建
  3. */
  4. declare("com.zsq.C1",null,{
  5. id:null,name:null,getName:function(){
  6. return this.name;
  7. },constructor:function(){
  8. // 特殊的方法 在类实例化的时候会执行该方法
  9. }
  10. });
  11.  
  12. /**
  13. * 相当于JAVA的匿名内部类
  14. */
  15. var c2 = declare(null,getId:function(){
  16. return this.id;
  17. }
  18. });
  19.  
  20. /**
  21. * 子类
  22. */
  23. var c3 = declare(c2,{
  24. code:null,getCode:function(){
  25. return this.code;
  26. }
  27. });
  28.  
  29. /**
  30. * 多继承
  31. */
  32. var c4 = declare([c3,c2],{
  33. type:null,getType:function(){
  34. return this.type;
  35. }
  36. });

2. 封装为符合AMD规范的对象 // 其实也就是一个requirejs定义模块包裹一下 文件路径 my/Person.js

  1. define(["dojo/_base/declare"],function(declare){
  2. return declare(null,{
  3. constructor: function(name,age,residence){
  4. this.name = name;
  5. this.age = age;
  6. this.residence = residence;
  7. }
  8. });
  9. });

3. 对象的使用同样基于requirejs 通过文件路径查找相应的JS 这个和配置有关 这个这里不描述

  1. require(["my/Person"],function(Person){
  2. var folk = new Person("phiggins",42,"Tennessee");
  3. });

可以说是只是使用了Dojo的类定义封装

4. 静态对象 参照JAVA 其实所谓的静态就是一个全局的对象 如:java 的class 定义对象 JS 也一样 只是使用一个全局的对象来实现static

  1. define(['dojo/_base/declare'],function(declare){
  2. var Demo = declare(null,{
  3. constructor: function(){
  4. console.debug("this is Demo object #" + Demo.counter++);
  5. }
  6. });
  7.  
  8. Demo.counter = 0;
  9.  
  10. return Demo;
  11. });

猜你在找的Dojo相关文章