web前端之精通dojo三:载入Dojo
模块化JavaScript:
Dojo是通过静态的客户端JavaScript脚本、html支持模板以及css样式表实现的。在服务器端,除了传输一些静态文件的要求以外,不需要任何支持。它也不需要浏览器端的插件或扩展。
如果一个JavaScript文件定义了一个Dojo模块对象(即实例化了那个JavaScript对象变量),我们就称这个文件为模块主脚本。当载入一个模块主脚本时,它可能会载入其他的脚本。从这个意义上讲,一个模块可以分为多个脚本文件,但是这些脚本只有一个文件负责定义模块对象。模块主文件的名称对应着模块的名称:
(1)、组成了整个模块的所有文件保存在一个目录中。目录结构名称和模块主脚本文件的名称组成了模块的名称。例如,Dojo拖放管理器模块dojo.dad.manager就保存在~dojo/dad/manager.js中
(2)、对大部分情况来说,当一个模块主脚本载入到JavaScript程序时,这个模块所定义的所有JavaScript对象(除子模块对象以外),都当做是模块对象的属性被创建出来。同样,所有在dojo.dad.manager模块下定义的公共对象,也都是dojo.dad.manager的属性。
Dojo源代码组织
Dojo模块的元素被组织为三个分支
dojo:核心工具包,包含几乎所有程序需要的库
dijit:一个用于生成HTML用户界面的框架,它包含了很多内建图形化的小部件,dijit依赖于dojo
dojox:一些并非所有应用程序都需要,或者由于接近现代浏览器的极限
dojo模块的分类:
环境属性:指明运行时环境的一组变量(比如,浏览器的版本及其能力)
语言扩展:填补JavaScript中漏掉的少量元素(后续会进行说明)
异步编程:用来进行事件编程和异步回调功能(后续会进行说明)
DOM编程:使编写DOM更加容易(后续会进行说明)
XHR编程:用以通过XHR对象访问服务器(后续会进行说明)
面向对象编程:用以创建强大而灵活的类层次结构所需要的功能(后续会进行说明)
Dojo加载器:用以载入JavaScript和Dojo模块的功能(后续会进行说明)
dojo根目录下包含几个不会载入的模块,因此必须显示地通过dojo.require函数载入它们,这些函数主要包括:
dojo.back:为那些不使用载入URL来导航的应用程序,提供返回按钮功能
dojo.behavior:可以附加到节点上的“行为(behavior)”
dojo.cldr:一个本地通用数据容器实现与dojo.i18n协同工作
dojo.colors:方便CSS颜色操纵功能
dojo.cookie:简单HTTPcookie控制
dojo.currency:解析、格式化及国际化货币数据的功能
dojo.data:泛化数据源的访问功能以及数据源
dojo.date:解析、格式化以及国家化时间数据的功能
dojo.dnd:拖放
dojo.fx:DOM效果
dojo.i18n:支持多个区域设置,可以与dojo.cldr协同工作
dojo.io:通过脚本或者iframe与服务器进行通信
dojo.number:解析、格式化以及国际化数字数据的功能
dojo.parser:HTML解析器
dojo.regexp:用以帮助声称正则表达式功能
dojo.rpc:远程调用(RPC)框架
dojo.string:一些通用或者空缺的字符串功能
载入Dojo:
现在到了正式加载工具包并且使用的时候了。必须先载入dojo.js才能载入任何其他的dojo模块或者使用它们。
<script type="text/javascript" src="/dojoroot/dojo/dojo.js">
我们使用dojo.js的script元素中的djConfig属性来指定打开parseOnLoad开关
<script type="text/javascript" src="/dojoroot/dojo/dojo.js" djConfig="parseOnLoad:true">
dojo.reuqire:
这样载入一个没哟包含在dojo模块中的内容?可以使用dojo.reuqire来进行载入dojo.reuqire(dojo.colors),就如同载入/dojoroot/dojo/dojo/colors.js。