在dojo 1.7.2中构建一个

时间:2012-02-19 19:25:03

标签: dojo

好吧,我读了所有关于构建和所有关于dojo的内容。三天噩梦等等......需要一些帮助。

我正在使用最后一个版本的dojo。 1.7.2 in:

</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个文件。 但我仍然(想)认为可以减少到一个或两个文件。

但是如何?????

请,一些帮助将不胜感激!!!!

2 个答案:

答案 0 :(得分:1)

好的,你的个人资料不对。

首先:您正在使用customBase,这是用于创建最小版dojo核心的高级属性。我不认为你想要那个,对吗?通常,你只是让dojo正常构建它的核心,最终在你的输出目录中以dojo.js结束。

第二个:每个layer条目都会生成一个缩小的.js文件,其中包含dependencies内的所有文件。

因此,如果您想在构建的JS文件中使用myApp内容,则需要创建一个图层,并将文件放在其依赖项中。

Dojo仍将生成所有单个文件 - 但您不必部署它们。只需部署图层文件。我通常有一个Dojo核心层,一个我想要的dijit / dojox的层,然后是我自定义JS的一个层。然后有三个JS文件,dojo将在dojo目录中输出,并且它们在HTML页面中使用。

答案 1 :(得分:0)

...
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>