dojo Quick Start/dojo入门手册--开始使用dojo.js
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相关推荐
- dojo Quick Start/dojo入门手册--package机制
说完了dojo里的类继承机制,不得不说说package机制. 主要用到的有 dojo.require dojo.provide dojo.registerModulePath dojo.require ...
- dojo Quick Start/dojo入门手册--dojo.hitch scope/context
既然用到了xmlhttp,一个常见的问题就是回调函数的scope/context.在prototype.mootools里我们常用Function.bind,在dojo中,做相同事情的东西叫做dojo ...
- AI产品经理入门手册(下)
近两年来AI产业已然成为新的焦点和风口,各互联网巨头都在布局人工智能,不少互联网产品经理也开始考虑转型AI产品经理,本文作者也同样在转型中.本篇文章是通过一段时间的学习归纳总结整理而成,力图通过这篇文 ...
- rocketmq 顺序消费_必须先理解的RocketMQ入门手册,才能再次深入解读
推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...
- 推荐算法炼丹笔记:CTR点击率预估系列入门手册
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
- React 入门手册
大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...
- rocketmq 订阅组_必须先理解的RocketMQ入门手册,才能再次深入解读
推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...
- Dojo学习笔记(一):Hello Dojo!
欢迎来到Dojo世界!在这篇文章中你将会学习到如何加载Dojo以及探索Dojo的一些核心功能.你还会了解Dojo的基于AMD的模块架构,探索如何加载额外的模块来增加功能到您的Web站点或应用程序,并找 ...
- Tablestore入门手册-UpdateRow接口详解
表格存储Tablestore入门手册系列主要介绍表格存储的各个功能接口和适用场景,帮助客户了解和使用表格存储Tablestore.本文对表格存储Tablestore的UpdateRow接口进行介绍,包 ...
最新文章
- 使用PCB Editor 布局布线
- Android 三方库EventBus的使用
- Windows下安装tensorflow-gpu/cpu教程
- Linux tail命令
- CodeForces 11D(状压DP 求图中环的个数)
- 托福试卷真题_干货解答考生疑惑,自考真题考过了还会在出吗?
- Thread 线程基础之-线程相关知识
- 用html布局象棋棋盘,5分钟掌握22种常见象棋布局,实例演示象棋布局大全、开局大全...
- 【论文阅读笔记】文本相似度分析方面
- 微信小程序支付宝小程序合并二维码
- 打开FTP server或者wftpd32提示 unknow error 10013
- cryptojs vue 使用_vue 中引入cryptoJS
- 值得收藏!教你如何在火星直播中使用分享码
- 802.11a/b/g/n/ac速率表
- 网页地址栏?和的意义
- python 正则表达式的应用
- 解决使用Keil5不能生成bin文件或生成的是.bin文件夹问题
- matlab数据导出wps,怎么把金山WPS表格的数据导入MATLAB/
- 4.Transact_Sql语言基础
- C++头文件和源文件的编译过程
热门文章
- C++实现斐波那契查找(附完整源码)
- QT绘制带有负条的条形图。
- QT的QParameter类的使用
- C++ Opengl 3D世界源码
- C语言实现类似QQ聊天界面抖动功能
- linux手动注入网络数据_Linux网络 - 数据包的接收过程
- 07_创建tensor,从numpy创建,从List创建,设置默认类型,rand/rand_like,randint,full,arange,linspace/logspace,linspace等等
- MySQL隧道创建方式
- fiddler几种功能强大的用法(一)转自:http://www.cnblogs.com/chenshaoping/p/5785010.html
- web系统 手机app 能访问吗?_苹果手机能下载什么好用的桌面便签?有什么好的便签app推荐吗...