说完了dojo里的类继承机制,不得不说说package机制。

主要用到的有
dojo.require
dojo.provide
dojo.registerModulePath

dojo.require

dojo.require就是引入相应路径文件下的js文件,现在已经有很多library这样做了。现在我们假设要用project/dojo-lib/dojo/string.js

dojo中的顶层目录就是dojo.js所在目录的上一层,即"project/dojo-lib/",而dojo.js放在project/dojo-lib/dojo/dojo.js 所以我们就这样:

dojo.require("dojo.string");

比如要引用其他目录下的:

project/dojo-lib/dojox/dtl/_base.js,则这样:dojo.require("dojox.dtl._base"); project/dojo-lib/dojox/grid/Grid.js dojo.require("dojox.grid.Grid");

说白了,就和ruby之类的require很相似。

dojo.provide

要自己编写一个package怎么办,那就利用dojo.provide。比如要写在:project/dojo-lib/com/javaeye/fyting/Package1.js 那么在对应的Package1.js中第一行需要这样写:

dojo.provide("com.javaeye.fyting.Package1");

类似java里的package声明,是吧?

dojo.registerModulePath

那要是我写的js文件不想和dojo放在一起怎么办呢,那就用registerModulePath。假设要放在:

project/js/com/javaeye/fyting/Package2.js

Package2.js和上面的Package1.js一样的写法,不需要作特殊变化,就这样就行:

dojo.provide("com.javaeye.fyting.Package2");

在使用时,需要指名这个Package2.js所在的位置,
dojo.registerModulePath("com","http://www.cnblogs.com/js/com");
只需要注意这里的相对路径是相对dojo.js来的。

我们假设所有以com.javaeye开头的js都放在一起,而com.microsoft的放在另外的地方,为了防止冲突,可以这样:
dojo.registerModulePath("com.javaeye","http://www.cnblogs.com/js/com/javaeye");
dojo.registerModulePath("com.microsoft","http://www.cnblogs.com/javascript/com/microsoft");

总得来说,package机制是开发大型项目必须的,但是造成了调试困难,使用dojo.require引入js出错时,根本不知道是什么原因,所以调试时最好手动引入js,dojo的test也是这么搞的。还有js框架中的各种实现类继承的手法,也造成调试困难,dojo还随地抛出个Error,又缺少java那样的error statck,根本不知道错误根源在哪儿。所以,期待js原生地支持这些。

dojo Quick Start/dojo入门手册--package机制相关推荐

  1. dojo Quick Start/dojo入门手册--面向对象,定义Class

    下一步我们看看dojo里如何定义Class: dojo.declare("Customer",null,{     constructor:function(name){      ...

  2. dojo Quick Start/dojo入门手册--dojo.hitch scope/context

    既然用到了xmlhttp,一个常见的问题就是回调函数的scope/context.在prototype.mootools里我们常用Function.bind,在dojo中,做相同事情的东西叫做dojo ...

  3. dojo Quick Start/dojo入门手册--xmlhttp dojo.xhrGet

    OK,介绍了简单的DOM操作方法,接下来该到Ajax的传统项目-XmlHttp了.在使用xmlhttp时,需要注意到编码的问题,要让dojo默认绑定为utf-8怎么办呢?很简单,只需要修改一下引入do ...

  4. dojo Quick Start/dojo入门手册--开始使用dojo.js

    2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用.一来是由于文档的缺少,而来是dojo的相关介绍总是让人望而生畏. 到现在都如此,第一个hello world就搞了 ...

  5. dojo Quick Start/dojo入门手册--json

    那要是我想更换获取到的数据类型,比如json?xml?修改handleAs即可,如: handleAs: "json" dojo.xhrGet({     url: "h ...

  6. Medusa(美杜莎)和Hydra(九头蛇)快速入门手册:02

    本文是Medusa和Hydra快速入门手册的第二部分,第一部分的传送门这两篇也是后续爆破篇的一部分,至于字典,放在最后,后续会把祖传的几十G字典准备好 Hydra入门使用手册 vanHauser Th ...

  7. rocketmq 顺序消费_必须先理解的RocketMQ入门手册,才能再次深入解读

    推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...

  8. 推荐算法炼丹笔记:CTR点击率预估系列入门手册

    ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...

  9. dojo.publish 和 dojo.subscribe

    这俩个函数都与事件紧密相关. -- dojo.subscribe(/*String*/topic, /*Object|null*/context, /*String|Function*/method) ...

最新文章

  1. python re match groups_python re.match与re.search的区别
  2. (已解决)module ‘tensorflow‘ has no attribute ‘app‘
  3. hashmap 判断key是否存在
  4. 我想吐槽“吐槽 Google 换新 Logo 的人”
  5. jQuery ajax实现
  6. 【代码收集】提前载入贴图
  7. Nginx 的常用命令
  8. oracle application r11i,有人在linux 2.1AS下安装过R11i吗?请帮忙解决如下问题
  9. [JBoss] JNDI与JBossNS
  10. 2921年3月计算机二级office,国家二级计算机考试office怎么报名
  11. 冯 诺依曼计算机体系结构要点,冯诺依曼体系结构计算机的要点和工作过程
  12. Linux 下查看内存问题
  13. gtx 750 linux驱动下载,Ubuntu 12.04安装NVIDIA GTX750显卡驱动
  14. LVS-NAT基于NFS存储部署Discuz
  15. 用python把图片换成蓝底_用python 将蓝底照片转化为白底照片
  16. win10如何安装mysql_win10安装mysql详细步骤
  17. 计算机休眠查询,可不可以查询电脑待机记录
  18. 努力学习 努力奋斗 踏步而立
  19. 创始人是公关营销的关键所在
  20. 看看你的眼力了,是眼睛欺骗大脑,还是大脑控制眼睛~~

热门文章

  1. php笔记之-PHP文件系统
  2. 一直出现 Enter passphrase for key '/root/.ssh/gitkey12.pub'
  3. String 类型的相关转换
  4. 凯文·凯利:下一个5000天的12个必然趋势!
  5. 前美团产品专家罗鑫:谈谈我对增长这件事的理解
  6. 一夜吸粉200万被封杀,微信都有哪些逆鳞?
  7. 玩具租赁到底在解决用户什么痛点?
  8. hadoop 2.x HA 出现ssh不能解析问题记录。
  9. 成为Web开发大师你必须知道的7件事情
  10. 《jQuery、jQuery UI及jQuery Mobile技巧与示例》——9.17 技巧:使用多个列