Search code examples
javascriptdojojs-amd

How do I use uncompressed files in Dojo 1.7?


I've created a Dojo module which depends on dojox/data/JsonRestStore like this:

define("my/MyRestStore", 
    ["dojo/_base/declare", "dojox/data/JsonRestStore"], 
    function(declare, JsonRestStore) {

var x = new JsonRestStore({
    target: '/items',
    identifier: 'id'
});

...

which is fine. But now I want to have the the uncompressed version of the JsonRestStore code loaded so that I can debug it. I can't find any documentation on how to do this, but since there is a file called 'JsonRestStore.js.uncompressed.js' I changed my code to:

define("my/MyRestStore", 
    ["dojo/_base/declare", "dojox/data/JsonRestStore.js.uncompressed"], 
    function(declare, JsonRestStore) {
...

thinking that might work.

I can see the JsonRestStore.js.uncompressed.js file being loaded in FireBug, but I get an error when trying to do new JsonRestStore:

JsonRestStore is not a constructor

Should this work?

Is there a way of configuring Dojo to use uncompressed versions of all modules? That's what I really want, but will settle for doing it on a per dependency basis if that's the only way.

Update

I've found a way to achieve what I want to do: rename the JsonRestStore.js.uncompressed.js file to JsonRestStore.js.

However, this seems a bit like a hacky workaround so I'd still be keen to know if there is a better way (e.g. via configuration).


Solution

  • You have two options

    1) Create a custom build. The custom build will output a single uncompressed file that you can use for debugging. Think the dojo.js.uncompressed.js but it includes all the extra modules that you use.

    OR

    2) For a development environment, use the dojo source code. This means downloading the Dojo Toolkit SDK and referencing dojo.js from that in the development environment.

    For the projects I work on, I do both. I set up the Dojo configuration so that it can be dynamic and I can change which configuration that I want using a query string parameter.

    When I am debugging a problem, I will use the first option just to let me step through code and see what is going on. I use the second option when I am writing some significant js and don't want the overhead of the custom build to see my changes.

    I describe this a bit more at

    http://swingingcode.blogspot.com/2012/03/dojo-configurations.html