2012-02-19 9 views
8

Bene, ho letto tutto su build e tutto su dojo. Tre giorni da incubo e così via ... Ho bisogno di aiuto.Costruisci un dojo 1.7.2

Sto usando l'ultima versione del dojo. 1.7.2 in:

</sites/somesite/scripts/dojo17> 
which contains 
--dojo 
--dijit 
--dojox 
--utils 

Io uso il seguente profilo:

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" ] 
] 
}; 

allora io uso questo script di build

./build.sh profile=../../../../myApp/myApp.profile.js releaseDir=../../../release 

e ho avuto la

</sites/somesite/scripts/release/content7> 
which contains 
--dijit 
--dojo 
--dojox 
--myApp 

ora nella mia file index.html devo

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

E sì, questo ridurre i file caricati 230, senza la costruzione di 153 file. MA fermo (voglio) credere che sia posibble ridurre a uno o 2 file.

Ma COME ?????

Per favore, qualche aiuto sarà apprezzato !!!!

risposta

1

Ok, il tuo profilo non è corretto.

primo di tutti: Si utilizza customBase, che è una proprietà avanzata per la creazione di una versione minima di core dojo. Non penso che tu lo voglia, vero? Normalmente, lasci semplicemente che dojo costruisca il suo core normalmente, e che finisca come dojo.js nella tua directory di output.

2 ° di tutti: Ogni layer ingresso vi genererà un file .js minified con tutti i file in dependencies al suo interno.

Quindi, se vuoi il tuo materiale myApp in un file JS, devi creare un livello e mettere i tuoi file nelle sue dipendenze.

Dojo genererà comunque tutti i singoli file, ma non è necessario distribuirli. Basta distribuire i file di livello. Di solito ho uno strato per il core Dojo, uno per il roba dijit/dojox che desidero, e poi un layer per il mio JS personalizzato. Poi ci sono tre file JS, che dojo produrrà nella directory dojo, e sono usati nella pagina HTML.

+0

** ** 1 °: ok tolgo il 'customBase', solo per ora, perché voglio davvero un molto poco .js. ** 2 ° **: Ho bisogno di un .js minified con tutte le dipendenze in modo che il mio html non debba chiamare tutti gli altri .js (153 file !!!!). *** 3 *** La compilazione ha comunque creato 153 file. Voglio solo un file con tutte le dipendenze all'interno. – Agustincl

+0

Dojo continuerà a creare tutti i singoli file, ma non è necessario distribuirli. È sufficiente distribuire i file creati per i livelli. Non vedo nel tuo profilo dove hai un livello che raccoglie tutto il * tuo * JS personalizzato e ne hai bisogno. – mtyson

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" 
    ]   
    } 
], 
... 

occorrono solo due richieste;

<script src=..dojo.js></script>

e

<script>require(["myApp.smartmix"], function(smartmixApplication) { });</script>