2012-02-19 59 views
8

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

我正在使用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> 

而且这是没有减少的构建到153个文件加载的230个文件。 但是剧照我(想)认为是posibble减少到一个或两个文件。

但是如何?

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

回答

1

好的,你的个人资料是不正确的。

首先是:您正在使用customBase,这是用于创建最小版本的dojo内核的高级属性。我不认为你想要那个,是吗?通常情况下,你只要让dojo正常建立它的内核,并且在你的输出目录中以dojo.js结尾。

第二的所有:每layer进入会有产生缩小的.js文件,在里面dependencies的所有文件档案。

所以,如果你想在构建的JS文件中使用myApp东西,你需要创建一个图层,并将你的文件放入其依赖关系中。

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

+0

** ** 1:确定我删除'customBase',只是现在因为我真的希望有一个非常小的.js。 **第二**:我需要一个缩小的.js与所有的依赖关系,所以我的html不必调用所有其他.js(153文件!!!!)。 ***第三***构建仍然制作了153个文件。我只想要一个包含所有依赖关系的文件。 – Agustincl 2012-02-22 21:51:05

+0

Dojo仍然会创建所有单个文件 - 但您不必部署它们。您只需部署为您的图层创建的文件。我没有在你的个人资料中看到你有一个将所有*自定义JS聚集在一起的图层,而你需要一个。 – mtyson 2012-02-23 01:15:31

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>

相关问题