2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用。一来是由于文档的缺少,而来是dojo的相关介绍总是让人望而生畏。

到现在都如此,第一个hello world就搞了一大堆东西,比如widget组件,自定义的script标签等,加上要引入什么css文件,djConfig、dojo.require等等,让人很迷惑,这么复杂,到底dojo该怎么使用呢?

我只是想把dojo当作一个普通的js类库,就像prototype那样?OK,闲话少说,来看看如何使用dojo。

第一步,引入dojo.js

dojo的发行包里有4个子目录,要引入的文件是名叫"dojo"的子目录里的dojo.js。 假设你是这样的目录结构:

project
|
+--dojo-lib
| |
| +--dijit
| +--dojo
| +--dojox
| +--util
|
+--dojo_hello_world.html
<script type="text/javascript" src="./dojo-lib/dojo/dojo.js"></script>

开始使用dojo

现在开始使用dojo的第一个函数:dojo.byId ,dojo.byId就等同于常用的document.getElement 。

<input type="text" name="username" id="username" value="Mark" />
<script type="text/javascript">
var username = dojo.byId('username').value
alert(username);
</script>

OK,是不是和普通的js库一样,没有任何玄机?

dojo.addOnLoad

现在我们想在window.onload里面处理一点东西,就像Ext.onReady,这个东西在dojo里叫做dojo.addOnLoad。

dojo.addOnLoad(function(){
 var username = dojo.byId('username').value
 alert(username);
});

dojo.connect

OK,window.onload搞定了,那么如何监听普通的dom事件呢?没问题,强大的dojo.connect出场。

<script type="text/javascript">
function sayHello(event)
{
 alert("Hello");
}
dojo.addOnLoad(function(){
 var btn = dojo.byId('hello');
 dojo.connect(btn,"onclick",sayHello);
});
</script>
<input type="button" id="hello" value="Hello" />

是不是和prototype的Event.observe($('btnAdd'), "load", doAdd)差不多? 用prototype时最烦的就是那个长长的bindAsListener了,使用dojo.conncect,可以在第三个参数中指定当前的scope:

var name = "Mark"
function sayHello()
{
 alert("Hello " + this.name);
}
var obj = {
 name: "Karl"
}
dojo.addOnLoad(function(){
 var btn = dojo.byId('hello');
 dojo.connect(btn,"onclick",obj,sayHello);//注意这行的第三个和第四个参数
});

OK,点击按钮,将输出:Hello Karl。这里dojo.connect的第三个参数变成了scope,而handler函数是第四个,实际上dojo.connect(btn,"onclick",sayHello); 与dojo.connect(btn,"onclick",null,sayHello); 相同。

更加复杂的用法这里不作介绍,写太多就越搞越复杂了,后面再写文章详细介绍dojo.connect,这里只简单介绍如何绑定DOM事件。

dojo Quick Start/dojo入门手册--开始使用dojo.js相关推荐

  1. dojo Quick Start/dojo入门手册--package机制

    说完了dojo里的类继承机制,不得不说说package机制. 主要用到的有 dojo.require dojo.provide dojo.registerModulePath dojo.require ...

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

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

  3. AI产品经理入门手册(下)

    近两年来AI产业已然成为新的焦点和风口,各互联网巨头都在布局人工智能,不少互联网产品经理也开始考虑转型AI产品经理,本文作者也同样在转型中.本篇文章是通过一段时间的学习归纳总结整理而成,力图通过这篇文 ...

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

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

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

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

  6. React 入门手册

    大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...

  7. rocketmq 订阅组_必须先理解的RocketMQ入门手册,才能再次深入解读

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

  8. Dojo学习笔记(一):Hello Dojo!

    欢迎来到Dojo世界!在这篇文章中你将会学习到如何加载Dojo以及探索Dojo的一些核心功能.你还会了解Dojo的基于AMD的模块架构,探索如何加载额外的模块来增加功能到您的Web站点或应用程序,并找 ...

  9. Tablestore入门手册-UpdateRow接口详解

    表格存储Tablestore入门手册系列主要介绍表格存储的各个功能接口和适用场景,帮助客户了解和使用表格存储Tablestore.本文对表格存储Tablestore的UpdateRow接口进行介绍,包 ...

最新文章

  1. 使用PCB Editor 布局布线
  2. Android 三方库EventBus的使用
  3. Windows下安装tensorflow-gpu/cpu教程
  4. Linux tail命令
  5. CodeForces 11D(状压DP 求图中环的个数)
  6. 托福试卷真题_干货解答考生疑惑,自考真题考过了还会在出吗?
  7. Thread 线程基础之-线程相关知识
  8. 用html布局象棋棋盘,5分钟掌握22种常见象棋布局,实例演示象棋布局大全、开局大全...
  9. 【论文阅读笔记】文本相似度分析方面
  10. 微信小程序支付宝小程序合并二维码
  11. 打开FTP server或者wftpd32提示 unknow error 10013
  12. cryptojs vue 使用_vue 中引入cryptoJS
  13. 值得收藏!教你如何在火星直播中使用分享码
  14. 802.11a/b/g/n/ac速率表
  15. 网页地址栏?和的意义
  16. python 正则表达式的应用
  17. 解决使用Keil5不能生成bin文件或生成的是.bin文件夹问题
  18. matlab数据导出wps,怎么把金山WPS表格的数据导入MATLAB/
  19. 4.Transact_Sql语言基础
  20. C++头文件和源文件的编译过程

热门文章

  1. C++实现斐波那契查找(附完整源码)
  2. QT绘制带有负条的条形图。
  3. QT的QParameter类的使用
  4. C++ Opengl 3D世界源码
  5. C语言实现类似QQ聊天界面抖动功能
  6. linux手动注入网络数据_Linux网络 - 数据包的接收过程
  7. 07_创建tensor,从numpy创建,从List创建,设置默认类型,rand/rand_like,randint,full,arange,linspace/logspace,linspace等等
  8. MySQL隧道创建方式
  9. fiddler几种功能强大的用法(一)转自:http://www.cnblogs.com/chenshaoping/p/5785010.html
  10. web系统 手机app 能访问吗?_苹果手机能下载什么好用的桌面便签?有什么好的便签app推荐吗...