Pergunta

este foi o meu primeiro construir dojo por isso, desculpa a minha ignorância nesta matéria.

Acabei de criar a minha compilação personalizada do dojo sistema de compilação usando o seguinte (muito simplificado) perfil:

dependencies = {
stripConsole: "normal",

layers: [       
    {
        name: "../dijits/cx/dijitsCXbuild.js",
        copyrightFile: "CopyrightCX.txt",
        dependencies: [
            "dojo.parser",
            "dijit.dijit",               
            "dijit._Widget",
            "dijit._Templated",
            "dijit._Container",
            "dojo.i18n",
            "dojo.NodeList-fx",
            "dojox.grid.cells",
            "dojox.grid.DataGrid",
            "dojox.layout.GridContainer",
            "dijit.TitlePane",
            "dijits.cx.TaskPanel",
            "dijits.cx.Identify"
        ]
    }
],

prefixes: [        
    [ "dijit", "../dijit" ],
    [ "dojox", "../dojox" ],
    [ "dijits.cx", "../dijits/cx" ]
]

}

... bem, tudo passa bem e eu conseguir meu próprio pacote com tudo o que eu solicitado. Então no meu webapp I incluem o seguinte

<script type="text/javascript">
  djConfig = {
    isDebug:false,
    parseOnLoad:true,
    locale:getLocale()
  };
</script>

<script type="text/javascript" src="Lib/cxdojo/dojo/dojo.js"></script>
<script type="text/javascript" src="Lib/cxdojo/dijits/cx/dijitsCXbuild.js"></script>

... parece ok, até que as necessidades de código para instanciar o primeiro dijit e falhar com o notório: ". Dijits.cx TaskPanel não é um construtor"

posso me livrar desse problema, incluindo o "dojo.require ()" Mas isso é algo que eu que eu vou me livrar criando meu costume própria construção. Alguma idéia do que estou fazendo de errado ou o que hei de fazer, a fim de evitar que 'dojo.require) (' linhas ... graças montões.

Foi útil?

Solução

Você ainda precisa do dojo.require em seu arquivo. A construção comprimido apenas impede a dojo.require de fazer um pedido GET para o arquivo que é exigido pela concatenação de todos os arquivos em um arquivo e encolhê-lo. Isso economiza ciclos no carregamento da página um pouco (como eu tenho certeza que você já viu até agora).

Se você realmente quiser se livrar dos muitos dojo.require (que eu não sou muito louco por porque eu gosto de ver o que está usado na página), você pode fazer algo como isto:

dojo.provide('my.main');
dojo.require('dijit.cx.TaskPane');
... all the other dojo.require statements ...

Em seguida, colocar isso em um arquivo em um diretório paralelo ao dojo:

  Lib/cxdojo/my/main.js
  Lib/cxdojo/dojo/dojo.js
  .. etc ...

Em seguida, altere suas dependências a ser:

           dependencies: [
                    "my.main"
            ]

Em seguida, em seu arquivo, você pode incluí-lo com a tag script:

 <script type="text/javascript" src="Lib/cxdojo/my/main.js"></script>

Em seguida, você só precisa de um requerem:

  dojo.require('my.main');

Outra vantagem dessa abordagem é que você só precisa alterar um arquivo (os /my/main.js) quando você adicionar um módulo para a sua aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top