我正在尝试使用它提供的构建系统构建一个Dojo应用程序。我有一个主要的index.php文件加载dojo,dijit和dojox库
项目的结构类似于:
--root --_profile --_release --dojo-1.3.2-src -- dijit -- dojo -- dojox -- util --myApp --init.js --folders_with_all_my_code --index.php
在_profile文件夹中,我有myApp.profile.js,包括:
dependencies = {
stripConsole : 'all',
action : 'clean,release',
optimize : 'shrinksafe',
releaseName : 'myApp',
localeList : 'fr,es,it',
layers: [
{
name : "../app/init.js",
resourceName : "myApp.init",
dependencies : [
"myApp.init"
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "app", "../../app" ]
]
};
我正在启动此脚本来构建应用程序:
cd ../dojo-1.3.2-src/util/buildscripts
./build.bat profileFile=../../../_profile/myApp.profile.js releaseDir=../../../_release
它构建正常并按预期设置_release目录:
--root --_profile --_release -- myapp -- app -- all_my_code -- nls -- init.js.uncompressed.js -- init.js (a 2Mb file with all compressed dependencies) -- dijit -- dojo -- dojox -- util --dojo-1.3.2-src -- dijit -- dojo -- dojox -- util --myApp -- --index.php
在index.php文件中,在构建之前我包括:
var djConfig = {
parseOnLoad: true,
usePlainJson: true,
modulePaths : { 'app' : '../../myApp/app' }
};
script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script
并且工作正常。但是,一旦我编译了图层,我就应该更改指向dojo.js的脚本以指向新创建的图层,并将dojo.require指向新的压缩图层。因为在我指定的配置文件中,该层的位置与原始的init,js文件相同,所以我得到了这个:
var djConfig = {
parseOnLoad: true,
usePlainJson: true,
<s>modulePaths : { 'app' : '../../myApp/app' }</s>
};
<s>script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script</s>
<s>script ... dojo.require('app.init'); ... /script</s>
script ... src="/_release/myApp/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script
实际上,当我启动应用程序时,它只能正确加载一个文件,所以我猜道路径一切正常。实际上在Firebug日志中我可以看到GET请求,如果我展开它,我可以看到所有压缩的应用程序。然而,在加载它之后它会启动一个例外:
Could not load 'app.init'; last tried '../../myApp/app/init.js'
我不确定,但这似乎不是路径的问题,因为它正在下载文件init.js,所以现在我有点困惑。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
Try to play with modulePaths
or with dojoConfig.baseUrl
You could also try customBase
property so you only have to load your dojo.js and it will contains everything, even your app. (https://dojotoolkit.org/reference-guide/1.10/build/customBase.html)