ArcGIS Javascript, Dojo e o método require

Ando investigando a API Javascript ArcGIS. Esta API é escrita em cima do framework Dojo, que provê um monte de funções úteis, além de um biblioteca bacana de widgets.

Tentando criar um código JS mais organizado, encontrei o método dojo.require, que, em conjunto dos métodos dojo.declare e dojo.provide, devolvem um pouco de sanidade ao programandor.  Ele funciona da seguinte maneira.  Você inventa um namespace/pacote,  e depois associa um caminho à ele:

dojo.registerModulePath( "pacote", "http://localhost/scripts/")

E depois pode incluir ou importar pacotes assim:

dojo.require("pacote.MinhaClasse");

A mágica é que o arquivo http://localhost/scripts/MinhaClasse.js é carregado automaticamente. Legal! Parecido com Java, C# e um monte de outras linguagens. Agora vou criar arquivos correspondentes às classes que criarei, e organizar a macarronada Javascript.

Mas não. A API Javascript ArcGIS, por alguma razão, procura pelo arquivo http://localhost/scripts/MinhaClasse.xd.js !!! De onde saiu este xd? E mesmo criando o arquivo que ele espera, seu conteúdo não é processado da forma correta.

Elaborando alguns testes eu susbtitui a referência:

<script type=”text/javascript” src=”http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.4″></script>

pela:

<script type=”text/javascript” src=”http://dojotoolkit.org/sites/all/modules/dojo/dtk_build/dojo/dojo.js”></script>

E funcionou ok. Parece que a versão do dojo entregue pela ESRI no ArcGIS não permite o uso do dojo.require. Para que isto seja possível, é necessário compilar o dojo de forma a permiti-lo carregar arquivos de domínios distintos, ou cross domain. Mas na API da ESRI não dá. Pena.

Encontrei como resolver o problema:

        djConfig = {
            parseOnLoad: true,
            baseUrl: "./scripts",
            modulePaths: {
                "minhasClasses": "./minhasClasses",
                "meusDijits": "./BLA"
            },
           isDebug: true
        }

Isto me ensina a aprender direito antes de escrever! =)

Posts relacionados

Esta entrada foi publicada em programação e marcada com a tag , , . Adicione o link permanenteaos seus favoritos.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>