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:
pela:
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! =)