2013-04-02 196 views
4

我們在我們的應用程序中使用dojo 1.7.2。儘管此版本支持AMD,但我們完全沒有使用該方法。我們仍然用dojo.require("package")的方法去 。dojo release build問題

我們需要爲我們的應用程序創建一個發佈版本。以下是我們正在使用的配置文件。我們使用ANT任務來執行此操作。我們的檔案 非常簡單,並沒有太多的道場需求。

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文件夾中獲得了一個custom_dojo.js文件。我們在應用程序中包含了這個JS文件。當我們打開這個JS文件並搜索圖層中提到的包 時,它們都可用。但是,當我們訪問應用程序頁面時,即使在頁面頂部包含 custom_dojo.js文件,我們仍然會看到單獨的HTTP請求會針對各個模塊發送。如果我們以正確的方式做到這一點,您能否建議我們?

回答

0

您似乎正在以舊的棄用格式編寫您的構建配置文件。新(V1.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" 
     ]} 
    } 
    }; 
})(); 

當然代替你自己的道路,此外,請注意我指定了新的斜槓記號代替舊點號模塊ID。

我再建這樣的:

dojo-release-1.7.4-src/util/buildscripts/build.sh --release --profile test.profile.js 

我已經使用道場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> 

參考 這是事實,我必須學會這艱難地爲文檔不是太容易閱讀和例子道場源使用新舊建造輪廓格式的混合,這不幫助。但是這些鏈接非常有用。

享受 馬丁