在 dojo 1.7.2 中构建
Posted
技术标签:
【中文标题】在 dojo 1.7.2 中构建【英文标题】:Make a build in dojo 1.7.2 【发布时间】:2012-02-19 19:25:02 【问题描述】:好吧,我阅读了有关构建和道场的所有内容。三天的噩梦等等......需要一些帮助。
我正在使用最新版本的 dojo。 1.7.2 英寸:
</sites/somesite/scripts/dojo17>
which contains
--dojo
--dijit
--dojox
--utils
我使用以下个人资料:
dependencies =
stripConsole: "all",
action: "release",
optimize: "shrinksafe",
layerOptimize: "shrinksafe",
//optimize: "closure",
//layerOptimize: "closure",
//mini: true,
//localeList : 'en-us',
//cssOptimize: "comments",
//selectorEngine: "acme",
releaseName: "content7",
layers: [
// This is a specially named layer, literally 'dojo.js'
// adding dependencies to this layer will include the modules
// in addition to the standard dojo.js base APIs.
name: "dojo.js",
customBase : true,
dependencies: [
"dojo.fx",
"dijit.form.Button",
"dojox.gauges.AnalogGauge",
"dojox.gauges.AnalogArcIndicator",
"dojox.gauges.AnalogNeedleIndicator",
"myApp.smartmix"
]
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "myApp", "../../../myApp" ]
]
;
然后我使用这个构建脚本
./build.sh profile=../../../../myApp/myApp.profile.js releaseDir=../../../release
我得到了
</sites/somesite/scripts/release/content7>
which contains
--dijit
--dojo
--dojox
--myApp
现在在我的 index.html 文件中
<script type="text/javascript">
//<![CDATA[
var djConfig =
parseOnLoad: true,
isDebug: false,
modulePaths:
'myApp': '../myApp'
;
//]]>
</script>
<script type="text/javascript" src="scripts/release/content7/dojo/dojo.js"></script>
<script>
dojo.require('myApp.smartmix');
</script>
是的,这将在没有构建的情况下加载的 230 个文件减少到 153 个文件。 但是我(想)相信仍然可以减少到一到两个文件。
但是如何?????
拜托,我们将不胜感激!!!!
【问题讨论】:
【参考方案1】:好的,您的个人资料不正确。
第一个:您正在使用customBase
,这是用于创建最小版本的dojo 核心的高级属性。我不认为你想要那个,是吗?通常,您只需让 dojo 正常构建其核心,然后在输出目录中以 dojo.js 结尾。
第二个:每个layer
条目都会生成一个缩小的.js 文件,其中包含dependencies
中的所有文件。
因此,如果您希望 myApp
的内容在构建的 JS 文件中,您需要创建一个层,并将您的文件放入其依赖项中。
Dojo 仍将生成所有单独的文件 - 但您不必部署它们。只需部署层文件。我通常有一个用于 Dojo 核心的层,一个用于我想要的 dijit/dojox 东西的层,然后是一个用于我的自定义 JS 的层。然后是三个js文件,dojo会在dojo目录下输出,在HTML页面中使用。
【讨论】:
1st:好的,我暂时删除了customBase
,因为我真的想要一个非常小的 .js。 2nd:我需要一个包含所有依赖项的缩小的 .js,这样我的 html 就不必调用所有其他的 .js(153 个文件!!!!)。 3rd 构建仍然生成 153 个文件。我只想要一个包含所有依赖项的文件。
Dojo 仍将创建所有单独的文件 - 但您不必部署它们。您只需部署为您的图层创建的文件。我在你的个人资料中没有看到你有一个层来收集所有你的自定义 JS,而你需要一个。【参考方案2】:
...
layers: [
// this is a layer 'application', which will cache all
// dependencies to smartmix and declare smartmix in the same file
name: "../../../myApp/smartmix.js",
dependencies: [
"dojo.fx",
"dijit.form.Button",
"dojox.gauges.AnalogGauge",
"dojox.gauges.AnalogArcIndicator",
"dojox.gauges.AnalogNeedleIndicator",
"myApp.smartmix"
]
],
...
你只需要两个请求;
<script src=..dojo.js></script>
和
<script>require(["myApp.smartmix"], function(smartmixApplication) );</script>
【讨论】:
以上是关于在 dojo 1.7.2 中构建的主要内容,如果未能解决你的问题,请参考以下文章