一、引言

由于项目一部分使用requirejs另一部分地图是用dojo开发(因为arcgis javascript使用的dojo),两个要和到一起,所以要求研究下如何把两者和到一起,花了两天时间看了看requirejs与dojo,终于搞定了,跟大家分享下==

二、AMD标准下dojo与requirejs区别与联系

AMD标准我就不说了,简单来讲这个就是类似java包import或者C#using,为了方便js管理与使用,不清楚的可以看下这个点击打开链接

一样的是dojo与requirejs都符合AMD标准,所以define、require和初始化基本一样,依次类推其他符合AMD的也应该通用;

不同的是dojo和requirejs都自己实现了AMD标准,没有依赖关系,dojo早期版本没有实现AMD的时候有人以requirejs为基础实现了AMD标准,所以一直以为dojo底层使用的是requirejs,但是我把dojo源码翻了翻没有找到requirejs,所以现在两者代码没有任何关联。

三、dojo与requirejs项目冲突整合

冲突的可能原因:如果两套框架完全没有关系,那么直接使用应该直接使用没有问题,为啥有冲突呢?

经过n次油霸实验,终于找到了原因所在,事实上两个框架代码并没有任何关系,但是在初始化配置的时候的参数设置会出现问题,一个的设置会影响另一个的设置,加入说两者设置完全相同那么没问题,但是两个项目的参数设置不同的话就会出现问题!!!

笔者决定将require框架抛弃,将requirejs中的配置全部搬到dojo的初始化设置中,毕竟dojo中还有arcgis javascript中地图的东西这样稳妥些。

四、AMD模式下dojo配置

下面讲解一下dojo中djconfig的参数

/*** Created by xcy on 2017/4/14.*/
var xcyip="192.168.70.133";
var webport=":8080";
var gisport=":6080";
var temp=location.pathname;
var package_path='/'+location.pathname.replace(/\/[^/]*$/, '').split("/")[1];
//var package_path='/ggdl/xcyjs';
//模块所处的路径
dojoConfig = {has: {"dojo-firebug": true,"dojo-debug-messages": true},parseOnLoad: true,async: true,//baseUrl: '/'+location.pathname.replace(/\/[^/]*$/, '').split("/")[1],baseUrl: package_path+'/3.20/dojo/',packages: [{name: "application", location: package_path+"/xcyjs"},{name:"js",location:package_path+"/js"}],shim : {'bootstrap' : { 'deps' : ['jquery'] },'BMap' : {'deps' : ['jquery'], 'exports': 'BMap'},'jquery-ui' : {'deps': ['jquery']},'ztree' : {'deps': ['jquery'],exports:'zTree'},'ztree-excheck' : {'deps': ['ztree']},'ztree-exedit' : {'deps': ['ztree']}},paths: {jquery: package_path+"/js/"+'lib/jquery','jquery-ui' : package_path+"/js/"+'lib/jquery-ui.min',handlebars: package_path+"/js/"+'lib/handlebars',bootstrap: package_path+"/js/"+'lib/bootstrap','bootstrap-datetimepicker': package_path+"/js/"+'lib/bootstrap-datetimepicker.min',echarts :package_path+"/js/"+ 'lib/echarts',chalk: package_path+"/js/"+'lib/chalk','jquery-dataTables':package_path+"/js/"+ 'lib/jquery-dataTables.min',layui:package_path+"/js/"+'lib/layui.all','ztree':package_path+"/js/"+'lib/jquery.ztree.core','ztree-excheck':package_path+"/js/"+'lib/jquery.ztree.excheck','ztree-exedit':package_path+"/js/"+'lib/jquery.ztree.exedit',Jtopo1:package_path+"/js/"+'lib/jtopo',bar:package_path+"/js/"+'lib/toolbar',module:package_path+"/js/module"}
};

1、has()

Dojo1.7+采用的配置选项。在has()中可以设置是否启用某个功能例如是否采用firebug调试,是否采用AMD的工厂扫描功能: 
dojoConfig={ 
has:{ 
“dojo-amd-factory-scan”: false, 
“dojo-firebug”: true 

}

2、baseUrl

baseUrl值是String形式。这个配置项可以重新定义本地或者跨域加载工具箱时的顶级路径。实践中一般用于自定义module的位置解析。 
baseUrl的默认路径是dojo.js文件的上一级目录。

比如文件路径为:

/--a/--dojo/--dojo.js/--aaa.js
/--b/--bbb.js

当require([aaa].……)的时候,则找的是aaa.js

此时我们要想使用bbb.js,使用require([b/bbb]……)是无法找到的,找到的路径实际路径是/a/b/bbb.js 。此时要修改该baseUrl,比如修改baseUrl=“/b”,这样require([bbb])……j就可以找到了。

3、package

packages是对象数组。提供了package 名字与路径的键值对。例如:

    packages: [{name: "application", location: "/xcyjs"},{name:"js",location:"xcyjs"}],

此时相当于为require中引用起了一个别名,require([application/aaa]……),实际路径是/xcyjs/aaa.js,这个是绝对路径,跟baseUrl没有关系;

而下面的一个是相对路径require([js/aaa]……),实际路径是baseUrl/xcyjs/aaa.js,这个需要注意,绝对路径相对路径绝对路径相对路径绝对路径相对路径!!!

4、path

可以将 module id 映射到不同的文件路径,与package有相同的效果

var dojoConfig = {packages: ["package1","package2"],paths: {package1: "../lib/package1",package2: "/js/package2"}
};// ...is equivalent to:
var dojoConfig = {packages: [{ name: "package1", location: "../lib/package1" },{ name: "package2", location: "/js/package2" }]
};

5、async

设置 Dojo core 采用异步加载。值可以为 true, false 或 legacyAsync( 将 loader 永久地置为 legacy cross-domain mode)

6、parseOnLoad

parseOnLoad: 设置为true的话,就会使用dojo/parser对象去解析页面加载的DOM和依赖(包括定义在dojoConfig.deps中数组)

7、waitSeconds

设定模块载入的超时之前的等待时间 缺省值为 0 (永远等待):

讲完这些就差不多够用的了,不过还有个问题,不知道大家记不记得在配置arcgis javascriptapi环境的时候会让你在init,js和dojo,js中修改[HOSTNAME_AND_PATH_TO_JSAPI]为自己的机器的路径。

这个时候我发现init自己初始化的时候会自己做一个判断,当我们不设置baseUrl的时候会默认使用我们在init中设置的路径,但是当我们在djconfig中配置baseUrl以后他就会默认使用我们设置的baseUrl,所以我们最好主动在djconfig文件中配置下baseUrl,这样使用起来比较方便。

五、总结

  • dojo与requirejs的区别
  • dojo与requirejs项目冲突与解决
  • dojo中djconfig配置详细解释

Arcgis javascript那些事儿(二十)——dojo中djconfig配置、dojo与requirejs项目冲突相关推荐

  1. Arcgis javascript那些事儿(十六)——GP服务的发布与使用

    一.引言 GP服务是为了弥补arcgis api的不足,提供用户自定义接口,有点类似SOE的开发,但是对编程能力要求不是很高,只需要在arcmap中创建模型发布就可以实现. GP服务主要分为两种:一. ...

  2. Arcgis Javascript那些事儿(十二)——geometry service几何服务

    1.引言 什么是几何服务(GeometryService)?从字面意义上来说是和几何(Geometry)相关的服务,具体一点讲我们可以用这个类实现一些简单的图形操作.例如: 测量直线的距离 形状的缓冲 ...

  3. Arcgis javascript那些事儿(十五)——影像服务的发布与使用

    一.引言 以前一直做的是矢量数据的应用,只是在铁三院实习的时候用AE进行了一些影像方面的处理,主要是获取影像中的高程来进行相关的分析.  影像服务是将栅格数据和影像数据作为服务发布出去.此时客户端便可 ...

  4. Arcgis javascript那些事儿(十八)——空间查询的几种方法

    一.引言 之前写过一些空间查询的方法,隔了半年重新使用的时候又重新查了下,总结了一些新的方法,供初级.中级高级使用者进行不同程度上的定制查询== 二.空间查询1--graphiclayer或featu ...

  5. Arcgis javascript那些事儿(十九)——地图标注添加

    一.引言 一般我们做标注都是在制图的时候就做好的,直接服务已发布当作底图直接加载上去就可以了,不过最近因为提出新的需求所以要深入研究一下,需求是注记一直处于最上面的图层,不能因为添加graphicla ...

  6. Arcgis javascript那些事儿(十四)——连接oracle

    一.引言 还记得第一次用arcmap连接oracle是懵逼状态,最近又需要搞一下,写下来方便自己和大家参考了. Arcgis的客户端基本都是32位的,所以当我们链接数据库时需要保证数据库的客户端是32 ...

  7. Arcgis Javascript那些事儿(十)--发布网络分析服务

    以前发布过几次网络分析服务,数据都是别人处理好的,按照教程一发,没有完全搞清楚流程,今天自己研究了下发布过程,写出来造福下giser. 一.数据准备 数据准备是重中之重,许多教程和文档并没有给大家说明 ...

  8. JavaScript学习(二十)—DOM中常用的属性

    JavaScript学习(二十)-DOM中常用的属性 1.clientWidth属性 作用:获取元素或页面的可视的区域的宽度 格式:节点.clientWidth 2.clientHeight属性 作用 ...

  9. JavaScript学习(二十九)—JS常用的事件

    JavaScript学习(二十九)-JS常用的事件 一.页面相关事件 onload事件:当页面中所有的标签都加载完成后厨房该事件,格式:window.onload <body><sc ...

最新文章

  1. 3 vue 线条箭头_教程|PPT绘制箭头最全攻略,收藏一下!
  2. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
  3. vba动态二维数组_VBA实战技巧05: 动态调整数组以存储所需数据
  4. 【Pytorch】X.view(-1)操作
  5. android点击获得坐标,android点击MapView任意一点获得坐标
  6. hbase 集群(完全分布式)方式安装
  7. 干掉 SQL 中的 like,我用 es 后运营小姐姐们都说好快!
  8. java生成pdf文件带页码_java(itext) 简单PDF表格生成工具(带页码)
  9. cpua55和a53哪个好_OPPOA55和OPPOA53哪个好-参数对比-更值得入手
  10. T1商贸宝加密狗相关配置
  11. 使Twitter数据对百事可乐和可口可乐进行客户情感分析
  12. 夜深人静写算法(四十九)- 高斯消元
  13. sws_scale转yuv到rgb
  14. Docker | 自定义网络(网关、子网地址)
  15. IBM计算机启动过程,ibm台式机bios设置u盘启动教程【图文教程】
  16. 情报板/路政/枪机/卡口/监控类摄像机
  17. 一些linux常用操作(1)
  18. java怎么改默认工作区_如何更改缺省JRE所有的Eclipse工作区?(How to change default JRE...
  19. 03.24.erer-test Estado da Pilha International –Março/ 2017
  20. 恶意网站http://www.chaxun.com,近日不断受到这个无耻网站的弹出广告骚扰(已找到解决方法)

热门文章

  1. sprd camera 帧率设置_UnityPlayerSetting-Android 打包设置介绍
  2. python的方向_Python Shell下方向键显示「^[[C^[[D」修复方法
  3. python describe函数_Python基础知识点梳理2,推荐收藏
  4. 继承性(HTML、CSS)
  5. 拳魂觉醒服务器维护怎么办,拳魂觉醒 哪些不为人知的的小秘密
  6. Git学习笔记:常用命令总结
  7. -moz、-ms、-webkit
  8. 从安装、管理到防御,阿里云安骑士全向测评
  9. python读取redis数据
  10. wps一直显示正在备份怎么办_笔记本电脑显示器一直闪动怎么办