首页
技术知识库
Task工作计划
网站简介
DON框架
后台管理
文章分类
JAVA
框架知识
操作系统
容器相关
数据库层
优化技术
界面编程
网络编程
开发工具
GO语言
其他
读书随笔
观影随笔
每日随笔
APP
dojo1.7的加载方法[DOJO]
所属分类
:[界面编程] |
创建时间
:2013-01-13 |
文章属性
:原创 |
文章来源
:http://windfly.cn |
作者
:windfly
<p> 对于dojo1.7来说,最大的变化就是引入了AMD异步加载器。 </p> <p> 在1.7以前的版本,dojo的加载是同步加载的。由于dojo包含的内容很多,也就导致了dojo在页面加载时会显的有点慢。 </p> <p> 现在在新版本中,dojo将要改变这一状况。页面加载时使用异步加载。只有在需要时才加载,而且只加载最小最核心的功能模块,这样,就会在最大程序中减少文件的下载量。 </p> <p> 使用1.7的新特性将会有两个明显的不同点。 </p> <p>   </p> <p> 1.引入核心js时使用加载后解析属性。如 </p> <p>   </p> <pre class="html" name="code"> <script type="text/javascript" src="dojoroot/dojo/dojo.js" data-dojo-config="parseOnLoad: true"></script></pre> <p>   </p> <p> 注意: 加了属性后,对于加载器来说只加载核心dojo.js并不加载别的模块内容,他会在页面加载完成后再去解析页面中的dojo部件。对于页面中dojo部件所需要的js必须使用require(["xxx"])来加载,不然会出现js错误。 </p> <p>   </p> <p> 2.在使用dojo的方法上有区别,以前是dojo.xxx而现在则使用require(["xxx"],function(){xxx}) </p> <p> 注意,以前的dojo.xxx的写法是建立在已经加载了模块js的基础上。也就是dojo.require("xxx");dojo.xxx </p> <p> 使用dojo.require会加载整个模块包的js,也是以前版本的写法。 </p> <p>   </p> <p> 3.require内容不同,以前版本dojo.require("dojo.form.Button")而1.7版本require(["dojo/form/Button"]) </p> <p>   </p> <p> 在使用1.7版本时,可能代码上会觉的有点繁琐,但这也保证了页面的加载效率。 </p> <p> 由于是异步加载,所以你并不知道你所使用的dojo模块或方法是否已经加载。这也就导致了基本上在每个页面中,如果你要使用某个模块,就必须在页面中使用require([])来加载你的模块,当然,也可以放到每个function中,以便实现更多的延迟加载。 </p> <p> 不用当心重复的require,dojo会自动检查是否已经加载过相应的js,如果已经加载过了,它不会再次加载 </p> <p>   </p> <p>   </p> <p> 示例: </p> <p> 以前版本的ajax写法 </p> <p> </p> <pre class="js" name="code">dojo.xhrPost({ form: "someFormId", content: { part:"one", another:"part" } });</pre>   <p>   </p> <p> 1.7版本的ajax写法 </p> <p>   </p> <pre class="js" name="code">require(["dojo/_base/xhr"], function(xhr){ xhr.post({ form: "someFormId" content: { part:"one", another:"part" }  }); });</pre>   <p>   </p>
返回