seiti.eti.br

programming & gadgets


by seiti tt seiti

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