Ant dojo发布版本的问题
我们在应用程序中使用dojo 1.7.2。尽管此版本支持AMD,但我们根本不使用这种方法。我们还在继续 使用遗留的Ant dojo发布版本的问题,ant,dojo,Ant,Dojo,我们在应用程序中使用dojo 1.7.2。尽管此版本支持AMD,但我们根本不使用这种方法。我们还在继续 使用遗留的dojo.require(“包”)方法 我们需要为我们的应用程序创建一个发布版本。下面是我们正在使用的配置文件。我们正在使用ANT任务来完成此任务。我们的简介 非常简单,没有太多dojo要求 dependencies = { layers: [ { name:"cutom_dojo.js", resourceNam
dojo.require(“包”)
方法
我们需要为我们的应用程序创建一个发布版本。下面是我们正在使用的配置文件。我们正在使用ANT
任务来完成此任务。我们的简介
非常简单,没有太多dojo要求
dependencies = {
layers: [
{
name:"cutom_dojo.js",
resourceName:"custom-dojo",
dependencies:[
"dojo.NodeList-traverse",
"dojo.io.iframe",
"dojo.date",
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ]
]
}
现在,我们正在使用下面的ANT任务创建发布版本
<target name="create-dojo-release">
<echo message="Starting Dojo Release Build " />
<java fork="true" dir="${shrinksafe.util.path}/buildscripts" classname="org.mozilla.javascript.tools.shell.Main">
<classpath>
<pathelement location="${shrinksafe.util.path}/shrinksafe/js.jar" />
<pathelement location="${shrinksafe.util.path}/closureCompiler/compiler.jar"/>
<pathelement location="${shrinksafe.util.path}/shrinksafe/shrinksafe.jar" />
<pathelement path="${java.class.path}" />
</classpath>
<arg value="../../dojo/dojo.js"/>
<arg value="baseUrl=../../dojo"/>
<arg value="releaseDir=${dojo.release.dir}"/>
<arg value="load=build"/>
<arg value="profile=${dojo.profile.file}" />
<arg value="action=clean,release" />
<arg value="version=1.7.2" />
<arg value="releaseName=cutom_dojo" />
<arg value="cssOptimize=comments" />
<arg value="copyTests=false" />
</java>
<echo message="Dojo Release build successfull." />
</target>
我们在dojo文件夹中得到一个自定义的dojo.js文件。我们在应用程序中包含了这个JS文件。当我们打开这个JS文件并搜索
在该层中提到,它们都在那里可用。但是,当我们访问应用程序页面时,仍然会看到针对各个模块发送的单独HTTP请求,即使
custom_dojo.js
文件包含在页面顶部。您能建议我们这样做是否正确吗?您似乎在用旧的不推荐的格式编写构建概要文件。新的(1.6版后)方式如下:
var profile = (function(){
return {
basepath: ".",
packages: [
{name: "dojo", location: "./dojo-release-1.7.4-src/dojo"}
],
layers: {
"dojo/custom_dojo": {include: [
"dojo/NodeList-traverse",
"dojo/io/iframe",
"dojo/date"
]}
}
};
})();
dojo-release-1.7.4-src/util/buildscripts/build.sh --release --profile test.profile.js
当然,替换您自己的路径,等等。还要注意,我使用新的斜杠符号而不是旧的虚线符号指定模块ID
然后我就这样建造了它:
var profile = (function(){
return {
basepath: ".",
packages: [
{name: "dojo", location: "./dojo-release-1.7.4-src/dojo"}
],
layers: {
"dojo/custom_dojo": {include: [
"dojo/NodeList-traverse",
"dojo/io/iframe",
"dojo/date"
]}
}
};
})();
dojo-release-1.7.4-src/util/buildscripts/build.sh --release --profile test.profile.js
我已经使用Dojo 1.7.4(最新的1.7版本)在上面的构建概要文件中尝试了这一点,并且使用下面的测试页面,它按照预期工作,无需再次下载模块
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script type="text/javascript" data-dojo-config="async:0" src="./dojotk/dojo/dojo.js">/*empty*/</script>
<script type="text/javascript">
// load the custom layer
dojo.ready(function() { dojo.require('dojo.custom_dojo') });;
// to be called on button click
function myFun() {
var ifr = dojo.require('dojo.io.iframe');
// check module has been loaded
if (ifr) {
alert('success: '+ifr);
};
return false;
}
</script>
</head>
<body>
<input type="button" value="click" onclick="return myFun();" />
</body>
</html>
测试
/*空的*/
//加载自定义图层
ready(function(){dojo.require('dojo.custom_dojo')});;
//要在按钮单击时调用
函数myFun(){
var ifr=dojo.require('dojo.io.iframe');
//检查模块是否已加载
如果(ifr){
警报(“成功:”+ifr);
};
返回false;
}
参考资料
的确,我必须以艰苦的方式学习这一点,因为文档不是很容易阅读,Dojo源代码中的示例使用新旧构建概要文件格式的混合,这也没有帮助。然而,这些链接非常有用