Dojo配置

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>

  • 5
  • 我们看一段非常熟悉的代码:
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, "	") + "```");
                    dialog.show();
                });
    </script>

<div id="dialog" data-dojo-type="dijit/Dialog" data-dojo-props="title: 'dojoConfig / dojo/_base/config'"></div>



  • 运行结果:

这里写图片描述

解释:在默认配置中与模块相关的配置属性主要为:baseUrlpackages,其中baseUrl代表着dojo默认去哪一个文件目录下面去加载js文件,packages是一个数组,其中记录着每一个模块所对应的路径。比如我们require(["dojo/dom"],function(){}),便是去查找文件:

这里写图片描述

其中C:inetpubwwwroot代表着网站的根目录,也就是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"//这是我随便写的
        }
  • 1
  • 2
  • 3
  • 运行结果

这里写图片描述

解释:因为我给dojoConfig对象添加了一个属性叫做myattr,所以该属性被添加到了dojo的配置文件中,需要注意的属dojoConfig必须在init文件加载之前设置,不然该对象设置无效,现在大家可能又有一些疑问:我随便添加了一个属性叫做myattr,这个属性没有什么作用啊?是的!如果添加一些无意义的属性确实是没有任何作用,但是在本实例中我们可以看到一点,我们可以在dojoConfig中设置我们自定义的属性,该属性是全局的,我们可以通过dojo/_base/config模块在任意的地方调用我们全局的属性,这对于我们开发有着至关重要的作用

3.总结

      在本篇博客中主要简单的介绍了一下dojo的配置,以及如何添加我们自己的配置项。可能大家还不是很懂dojoConfig的一些高级作用,不要担心,这个将在以后的博客中说明。

原文地址:https://www.cnblogs.com/fu-fu/p/8611000.html