Dojo学习笔记(2. djConfig解说)
djConfig是dojo内置的一个全局设置对象,其作用是可以通过其控制dojo的行为
首先我们需要在引用dojo.js前声明djConfig对象,以便在加载dojo.js的时候才能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段script
一个完整的djConfig对象定义如下(值均为dojo的默认值)
<script type="text/javascript"> var djConfig = { isDebug: false, debugContainerId: "aa", bindEncoding: "", allowQueryConfig: false, baseScriptUri: "", parseWidgets: true searchIds: [], baseRelativePath: "", libraryScriptUri: "", iePreventClobber: false, ieClobberMinimal: true, preventBackButtonFix: true, }; </script>
isDebug是一个很有用的属性,顾名思义,如果设置为真,则所有dojo.Debug的输出有效.
开发时应该设置为true,发布时应该设置为false
debugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用 document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器
allowQueryConfig,这个属性指明 dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如:
http://server/dojoDemo.htm?djConfig.debugContainerId=divDebug
baseScriptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,<script type="text/javascript" src="../dojo/dojo.js"></script>,自动获取的值便是 ../dojo/
ps: 如果你有多个工程需要同时引用dojo.js的话,建议也把dojo当作一个独立的工程,引用的时候采用绝对路径就 可以了
parseWidgets,这个是可以控制dojo是否自动解析具有dojoType的html元素为对应的widget,如果你没有使用任何Widget,建议设置为false以加快dojo的加载速度
searchIds,这是一个字符串数组,定义了所有需要解析为widget的html元素的ID,如果ID不在其中的html元素是不会被解析的,当数组为空数组时,则所有具有dojoType的元素都会被解析
还有一个bindEncoding,是用来设置默认的bind请求的编码方式
在实际开发中,可以把djConfig的定义放在一个js文件里,并将其作为第一个引用的js文件,这样应该是最方便的。
<script type="text/javascript"> var djConfig = { isDebug: true, debugContainerId: "aa",//定义调试信息输出的位置 bindEncoding: "" } </script> <script type="text/javascript" src="dojojs/dojo.js"></script> <script type="text/javascript"> dojo.require("dojo.widget.Button"); dojo.require("dojo.event.*");//调试信息需要引入 </script> <body> <center> <button dojoType="Button" widgetId="helloButton" onClick="dojo.debug('Dojo调试信息')">提交</button> </center> 输出调试信息之前的文字 <div id="aa"> </div> 输出调试信息之后的文字 </body>