文章目录
- 一、dojo常见API
一、dojo常见API
1、dojo/_base/declare
(1)作用:该模块用于声明一个类,类似于js 的class的作用。
(2)用法:declare(className, superClass, properties)
className:类名,有省略写法
superClass:继承的父类,一般为null
properties:对象(js中的prototype(原型对象),用于创建类时的继承)
(3)案例
// 常用写法,省略类名
var myclass=declare(null,{
// 可以定义属性,
// 可以定义方法,
// 可以定义constructor:
});
// 不常用写法
declare("myclass",null,{
// 同上
});
(4)参考链接
declare使用详解:https://blog.csdn.net/cexo425/article/details/19119737
2、dojo/_base/lang
(1)作用:就是一个扩展模块,提供了一些有用的方法
(2)用法:部分函数说明
clone(对象):克隆任何对象或者元素节点,返回:一个新的对象。
hitch(新的对象,执行函数):会在给定的上下文中执行给定一个执行函数。类似于JS的apply/call/bind改变this指向。
(3)案例
// 像下文这种异步回调函数的应用场景,当代码正在执行时,上下文会发生变化。执行上下文环境已经不再是最初提供的对象,而指向了外部对象(on的回调函数),为了解决这个问题,你可以使用hitch()去强制processEvent在此时“this”指向的上下文来执行。
require(["dojo/on", "dojo/_base/lang"], function(on, lang){
var processEvent = function(e){
this.something = "else";
};
on(something, "click", lang.hitch(this, processEvent));
});
(4)参考链接
dojo/_base/lang其他函数方法参考:https://blog.csdn.net/weixin_33725272/article/details/86043646
dojo/_base/lang –hitch()函数详解:https://blog.csdn.net/long_chuanren/article/details/83896948
3、dojo/_base/array
(1)作用:封装了数组中的一些方法。类似于JS当中数组
(2)用法:跟JS的数组的方法使用类似
(3)案例
require(["dojo/_base/array"],function(arrayUtil){
var arr= ['apple','orange','banana'];
arrayUtil.forEach(arr,function(item,index){
console.info("item:"+item+";index:"+index)
});
});
(4)参考链接
dojo/_base/array数组方法使用参考:https://blog.csdn.net/wenjinglala/article/details/52837322
4、dojo/_base/html
(1)作用:封装了dojo中有关dom操作的方法
(2)用法:部分函数说明
dojo.byId:等效于document.getElementById
(3)案例
// dojo.byId已弃用,可用dojo/dom代替
require ([ "dojo/dom" ], function ( dom ){
// 通过 id="someNode" 获取节点
var node = dom . byId ( "someNode" );
});
(4)参考链接
dojo/_base/html使用参考:https://dojotoolkit.org/reference-guide/1.10/dojo/_base/html.html
5、dojo/Deferred
(1)作用:是一个类,管理异步线程的基础。其实是更棒的promis的实现
(2)用法:先定义一个对象,然后调用对象的方法
(3)案例
require(['dojo/Deferred'],function(Deferred){
var deferred = new Deferred();
deferred.then(
function(result){
console.log("success"+result+'\t'+Date());
console.log("isResolved="+deferred.isResolved());
console.log("isFulfilled="+deferred.isFulfilled());
},
function(err){
console.log("error"+err+'\t'+Date());
},
function(progress){
console.log("progress"+progress+'\t'+Date());
}
)
setTimeout(function(){deferred.progress(1);},1000);
setTimeout(function(){deferred.progress(2);},2000);
setTimeout(function(){deferred.progress(3);},3000);
setTimeout(function(){deferred.resolve("ok");},3001);
//等待异步操作回调函数执行过程中下面的代码会同时执行
console.log("isResolved="+deferred.isResolved());
console.log("isFulfilled="+deferred.isFulfilled());
})
(4)参考链接
dojo/Deferred使用参考:https://blog.csdn.net/shiyangxu/article/details/81904551
dojo/Deferred类和dojo/promise类的使用:
https://blog.csdn.net/weixin_30685029/article/details/97435123
6、dojo/topic
(1)作用:发布订阅者模式,类似于vue的eventbus
(2)用法:
topic.subscribe:
用于订阅消息,接收两个参数,第一参数为要订阅的消息名字(唯一标识),如”socket/msg_arrive”,第二参数为回调函数。
topic.publish:
用于发布消息,接收任意多个参数,第一参数为要发布的信息名字(唯一标识),如”socket/msg_arrive”,其他参数为传递给订阅回调函数的参数。
(3)案例
require(["dojo/topic", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(topic, dom, on){
var handle = topic.subscribe("some/topic", function(e){
dom.byId("output").innerHTML = "I received: " + e.msg;
handle.remove();
});
on(dom.byId("publish"), "click", function(){
topic.publish("some/topic", { msg: "hello world" });
});
});
(4)参考链接
dojo/topic使用参考:https://blog.csdn.net/notejs/article/details/8745735
dojo/topic使用参考:https://blog.csdn.net/idomyway/article/details/84945377
7、dojo/dom(DOM相关)
(1)作用:封装了对dom的使用方法
(2)用法:
- dojo/dom模块
- dojo/dom-construct模块
- dojo/dom-attr模块
- dojo/dom-prop模块
- dojo/dom-class模块
- dojo/dom-style模块
- dojo/dom-form模块
(3)案例
require([ "dojo/dom" , "dojo/domReady!" ], function (dom) {
function setText(node, text){
node = dom.byId(node);//通过已有对象
node.innerHTML = text;
}
var one = dom.byId( "one" );//通过字符串
setText(one, "One has been set" );
setText( "two" , "Two has been set as well" );
});
(4)参考链接
dojo/dom使用参考:https://blog.csdn.net/shiyangxu/article/details/81433223
8、dojo/on
(1)作用:事件绑定问题,类似于JS的事件监听
(2)用法:on(element,event.name,handler)
(3)案例
require(["dojo/on", "dojo/dom","dojo/domReady!"],
function(on, dom) {
//获得dom元素
var btn= dom.byId("btn")
//给DOM元素绑定事件
on(btn, "click", function(evt){
alert("按钮被点击了");
});
})
(4)参考链接
dojo/on使用参考:https://blog.csdn.net/LoveCarpenter/article/details/54728455
9、dojo/aspect
(1)作用:在目标对象的某方法 执行后/执行钱/拦截 执行一个函数
(2)用法:before、after、around三个方法
(3)案例
// 参考链接的内容
(4)参考链接
dojo/aspect使用参考:https://blog.csdn.net/notejs/article/details/8745685
10、dojo/query(DOM相关)
(1)作用:组合了js原生dom获取以及处理的操作。
(2)本义:是根据一定的条件查询并获取某些 HTML 元素的引用,然后对这些元素进行操作以改变它们的属性、外观等。
(3)案例
// 参考链接
(4)参考链接
dojo/query介绍及使用参考:https://blog.csdn.net/dragonzoebai/article/details/8548209
dojo使用query dojo/query参考:https://blog.csdn.net/qq_36330643/article/details/72356823
11、dojo/dom-construct(DOM相关)
(1)作用:该模块定义了核心 dojo DOM 构建 API。
(2)用法:
domConstruct.toDom():用来将html标签字符串转化成DOM节点。
domConstruct.place():将现有节点放置在 HTML 文档中的某个位置
domConstruct.create():创建DOM节点
domConstruct.empty():清空 DOM 元素的内容。删除所有子节点,但将节点保留在那里。
domConstruct.destroy():删除所有子节点和节点本身
(3)案例
// 参考链接
(4)参考链接
dojo/dom-construct使用参考:https://dojotoolkit.org/reference-guide/1.10/dojo/dom-construct.html
12、dojo的DOM操作、query操作和domConstruct元素位置操作
参考链接:https://blog.csdn.net/weixin_30588827/article/details/96963208
13、dojo/_base/event
(1)作用:包含用于管理 DOM 事件的遗留 API,已被弃用。为了处理 DOM 事件,您应该使用dojo/on代替。
(2)参考链接
dojo/_base/event使用参考:https://dojotoolkit.org/reference-guide/1.10/dojo/_base/event.html
14、dojo/request
(1)作用:类似于axios,发送网络请求的包
(2)用法:
dojo/request/xhr:get()、post()、put()、del()等常规请求
dojo/request/script:可以向服务器发送跨域请求。script.get( url, option )
(3)案例
// 参考链接
(4)参考链接
dojo/request官方使用参考:https://dojotoolkit.org/reference-guide/1.10/dojo/request.html
15、dojo/_base/fx
(1)作用:包含基本的动画功能。
(2)参考链接
dojo/_base/fx官方使用参考:https://dojotoolkit.org/reference-guide/1.10/dojo/_base/fx.html
dojo/_base/fx 和 dojo/fx:https://blog.csdn.net/weixin_34392906/article/details/86043403
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84965.html