对于dojo1.7来说,最大的变化就是引入了AMD异步加载器。
在1.7以前的版本,dojo的加载是同步加载的。由于dojo包含的内容很多,也就导致了dojo在页面加载时会显的有点慢。
现在在新版本中,dojo将要改变这一状况。页面加载时使用异步加载。只有在需要时才加载,而且只加载最小最核心的功能模块,这样,就会在最大程序中减少文件的下载量。
使用1.7的新特性将会有两个明显的不同点。
1.引入核心js时使用加载后解析属性。如
<script type="text/javascript" src="dojoroot/dojo/dojo.js" data-dojo-config="parseOnLoad: true"></script>
注意: 加了属性后,对于加载器来说只加载核心dojo.js并不加载别的模块内容,他会在页面加载完成后再去解析页面中的dojo部件。对于页面中dojo部件所需要的js必须使用require(["xxx"])来加载,不然会出现js错误。
2.在使用dojo的方法上有区别,以前是dojo.xxx而现在则使用require(["xxx"],function(){xxx})
注意,以前的dojo.xxx的写法是建立在已经加载了模块js的基础上。也就是dojo.require("xxx");dojo.xxx
使用dojo.require会加载整个模块包的js,也是以前版本的写法。
3.require内容不同,以前版本dojo.require("dojo.form.Button")而1.7版本require(["dojo/form/Button"])
在使用1.7版本时,可能代码上会觉的有点繁琐,但这也保证了页面的加载效率。
由于是异步加载,所以你并不知道你所使用的dojo模块或方法是否已经加载。这也就导致了基本上在每个页面中,如果你要使用某个模块,就必须在页面中使用require([])来加载你的模块,当然,也可以放到每个function中,以便实现更多的延迟加载。
不用当心重复的require,dojo会自动检查是否已经加载过相应的js,如果已经加载过了,它不会再次加载
示例:
以前版本的ajax写法
dojo.xhrPost({
form: "someFormId",
content: { part:"one", another:"part" }
});
1.7版本的ajax写法
require(["dojo/_base/xhr"], function(xhr){
xhr.post({
form: "someFormId"
content: { part:"one", another:"part" }
});
});
分享到:
相关推荐
Dojo 1.7 是 Dojo Toolkit 重要的版本更新,其中引入了显著的改进和新特性,尤其是对模块加载机制的革新。这一版本的主要焦点在于Asynchronous Module Definition (AMD),这是一种优化JavaScript代码组织和加载的...
Dojo 1.7 引入了AMD规范,这是JavaScript中的一种模块化加载机制,使得代码可以异步加载,从而提高页面的加载速度。通过`require`和`define`函数,开发者可以更好地组织和管理代码,实现模块间的依赖注入。 二、...
Dojo 1.7 是一个重大的版本更新,其中引入了显著的改进和新特性,尤其是对模块加载机制的革新。这一版本的核心亮点是实现了Asynchronous Module Definition (AMD)机制,这是一项用于优化JavaScript模块加载的技术,...
1. **模块化系统**:Dojo 1.7 引入了AMD(Asynchronous Module Definition)模块加载机制,这允许异步加载JavaScript模块,优化了页面性能,避免了整体加载导致的阻塞。通过`require`和`define`函数,开发者可以轻松...
在Dojo 1.7 中,这些功能被重新组织并模块化,使得开发者可以根据需要按需加载,显著提高了页面加载速度。AMD模块化系统的引入是这一版本的一大亮点,它允许异步加载和依赖管理,使得代码结构更加清晰,也更利于维护...
《Dojo 1.7 深入解析与应用实践》 Dojo 是一个全面的JavaScript工具库,专为构建富互联网应用程序(RIA)而设计。这个“dojo-release-1.7.1-src”压缩包包含了Dojo 1.7.1的源代码,为开发者提供了深入了解和自定义...
Dojo 1.7 引入了Asynchronous Module Definition(AMD),这是一种异步模块加载机制,允许开发者按需加载JavaScript模块,提高页面加载速度。通过`require`和`define`函数,开发者可以组织代码,使其更加模块化和可...
手册中列举了一些常用的Dojo包,如dojo.io用于不同类型的IO传输,dojo.dnd提供拖放功能的API,dojo.string提供了字符串处理方法,dojo.date帮助解析和操作日期,dojo.event处理事件驱动和AOP开发,dojo.back管理撤销...
Dojo 1.7 引入了AMD,这是一种异步模块定义的加载机制,允许开发者按需加载模块,提高了页面性能。通过`require()`函数,我们可以方便地引入和依赖其他模块。 2. **Dijit UI 库:** Dijit是Dojo的UI组件库,包含...
在Dojo 1.7之后,推荐使用`require`和`define`,它们提供了更灵活的依赖管理和异步加载。 4. **工具集和组件**:dojo包含了丰富的UI组件,如按钮、表单、日历、树形视图等,这些都可以通过`dijit`模块来访问。此外...
Dojo的模块化设计是其一大特色,通过`dojo.require`或`require`方法可以按需加载所需模块,降低页面加载负担。此外,Dojo Toolkit提供了`dojo.declare`用于类的定义,支持面向对象编程。 Dojo中的Widget系统是另一...
dojo/store是Dojo 1.7引入的新API,它简化了数据操作,提供了增删改查的基础操作。 Dojo的异步通信主要通过dojo/xhr和dojo/io模块实现,支持GET、POST等HTTP请求,同时提供了处理JSONP、SOAP等跨域数据交换的解决...
在Dojo 1.7及更高版本中,推荐使用`dojo/xhr`模块代替。 - **淡出和移除**:在请求完成或失败时,可以添加回调函数实现元素的淡出和移除效果。 - **使用XMLHttpRequest来告诉服务器发生了什么**:`dojo.io.bind()...
`dojo/store` API 是一个更现代的数据访问接口,适用于Dojo 1.7及以上版本,但1.2.1版本可能仍包含一些相关的实现。 8. **Dojo事件处理** Dojo 提供了一种统一的方式来处理DOM事件,如`dojo/on` 函数。它简化了...
3. **AMD模块化**:Dojo 1.7 引入了基于AMD的模块化系统,通过dojo/require和dojo/define,开发者可以方便地定义和引用模块。这使得大型项目的组织和维护变得更为容易。在示例中,你可以看到如何组织模块,以及如何...
- **基础架构变更**:从 2.9 版本开始,ArcGIS JavaScript API 基于 Dojo 1.7,但尚未完全符合 AMD 规范。这意味着开发者不必因 API 使用了 Dojo 1.7 而修改其应用程序代码。 #### 五、JavaScript API 实际应用 - ...
1. **Ajax(Asynchronous JavaScript and XML)**:Ajax是一种在无需重新加载整个网页的情况下更新部分网页内容的技术。它通过JavaScript异步地与服务器交换数据并更新页面,提供了更好的用户体验。Ajax的核心组件...
它使得网页能够异步与服务器通信并更新部分页面内容,而无需重新加载整个页面。本文将详细介绍几种常用的 AJAX 框架及其使用方法。 #### 1. Purejavascript: Application Frameworks ##### 1.1 Bindows - **简介**...
b.1.1 dojo 248 b.1.2 rico 248 b.1.3 qooxdoo 248 b.1.4 tibet 249 b.1.5 flash/javascript集成包 249 b.1.6 google ajaxslt 249 b.1.7 libxmlrequest 249 b.1.8 rslite 250 b.1.9 sack 250 b....