1.引言
在前面的文章里面我们介绍了一下AMD规范,什么是AMD规范,我们用AMD规范可以做什么,我们还说了Dojo框架对AMD规范进行了实现,进而开发了一系列的模块让我们进行调用,现在就让我们来学习一下Dojo框架,看看Dojo到底提供给我们什么?在博客中我主要引入ArcGIS API的init.js文件(因为ArcGIS API是基于dojo的,主要学会了ArcGIS API 便相当于学会了Dojo)
2.Dojo配置
2.1 Dojo存在默认配置
话不多说,我们先看一段非常简单的代码:
- 首先引入我们的init.js文件和相应的css文件
<link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/>
<link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css" />
<script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.17/3.17/init.js"></script>
- 我们看一段非常熟悉的代码:
require(["dojo/dom"],function(dom){
dom.byId("...")
})
解释:前面我们介绍了AMD规范,我们就应该理解,require其实就是异步加载js文件,但是大家有没有一点疑问呢?dojo框架怎么知道我们的js文件存放在什么位置呢?dojo框架又要去那里去查找我们的js文件呢?按照一般的步骤,我们应该告诉js文件的路径,然后dojo才可以去加载我们的js文件。按照我们的思路:dojo一定会存在默认的配置,其中默认的配置会存放dojo框架js文件的路径,然后dojo根据配置去加载js文件。事实上我们想的是对的,接下来我们查看一下dojo都有那一写默认的配置呢?
2.2 查看dojo默认配置
在本示例中,主要介绍两个模块,一个叫做dojo/_base/config
,另外一个模块叫做dojo/json
dojo/_base/config
用于加载dojo的配置文件(加载进来是一个json对象)dojo/json
模块我们经常使用,用于json对象和字符串的相互转换- 实例中的主要意思是:将dojod配置转换成字符串,用对话框显示出来
<script>
require(["dijit/registry", "dojo/parser", "dojo/json", "dojo/_base/config", "dijit/Dialog", "dojo/domReady!"]
, function(registry, parser, JSON, config) {
parser.parse();
var dialog = registry.byId("dialog");
dialog.set("content", "<pre>" + JSON.stringify(config, null, "\t") + "```");
dialog.show();
});
</script>
<div id="dialog" data-dojo-type="dijit/Dialog" data-dojo-props="title: 'dojoConfig / dojo/_base/config'"></div>
- 运行结果:
解释:在默认配置中与模块相关的配置属性主要为:baseUrl
,packages
,其中baseUrl
代表着dojo默认去哪一个文件目录下面去加载js文件,packages
是一个数组,其中记录着每一个模块所对应的路径。比如我们require(["dojo/dom"],function(){})
,便是去查找文件:
其中C:\inetpub\wwwroot\代表着网站的根目录,也就是http://localhost,现在大家应该明白dojo/dom实际上是加载:http://localhost/arcgis_js_api/library/3.17/3.17/dojo/dom.js
了吗?可能大家还是有一些疑问这个路径是怎么得到的呢?现在我就给大家描述一下这个过程:require加载dojo/dom
这个模块,首先dojo
先去配置文件的packages
(查找name
属性)中查找,如果没有找到,那么就会去baseUrl
查找,如果还没有找到,报错。
2.3 修改dojo配置
我们通过上一实例发现dojo存在着默认配置,那么问题来了?我们如何添加我们自己的配置呢?或者说如何去修改dojo的默认配置呢?dojo框架提供给我们一个对象叫做dojoConfig,我们可以通过设置该对象修改dojo的默认配置,接下来我们添加一个我们自己的配置项:
var dojoConfig={
myattr:"12345"//这是我随便写的
}
- 运行结果
解释:因为我给dojoConfig对象添加了一个属性叫做myattr,所以该属性被添加到了dojo的配置文件中,需要注意的属dojoConfig必须在init文件加载之前设置,不然该对象设置无效,现在大家可能又有一些疑问:我随便添加了一个属性叫做myattr,这个属性没有什么作用啊?是的!如果添加一些无意义的属性确实是没有任何作用,但是在本实例中我们可以看到一点,我们可以在dojoConfig中设置我们自定义的属性,该属性是全局的,我们可以通过dojo/_base/config
模块在任意的地方调用我们全局的属性,这对于我们开发有着至关重要的作用
3.总结
在本篇博客中主要简单的介绍了一下dojo的配置,以及如何添加我们自己的配置项。可能大家还不是很懂dojoConfig的一些高级作用,不要担心,这个将在以后的博客中说明。