Globais
O runtime da cena garante a existência de certos objetos e funções dentro do ambiente JavaScript isolado, além das utilidades padrão como Promise, Date ou Math.
Os globais descritos abaixo são conceitos típicos do JavaScript, mas são adaptados ao runtime de cena do Decentraland e podem não se comportar de forma idêntica aos seus equivalentes em ambientes de navegador ou Node.
Globais
O runtime injeta 6 definições no escopo global da cena:
console: uma versão simplificada do típicoconsole.objeto: um objeto onde a cena pode adicionar sua interface pública.module: um contêiner para osobjeto.require: uma função para carregar módulos fornecidos pelo runtime por nome.fetch: uma implementação restrita dofetchfunction.WebSocket: uma implementação restrita doWebSocketclass.
Todos estes são definidos como propriedades somente leitura, portanto não podem ser reatribuídos. Alguns lançarão exceções quando usados a menos que certas permissions sejam concedidas à cena.
Console
As cenas têm acesso a um console objeto, muito parecido com o fornecido por um ambiente de navegador ou Node, embora limitado a apenas alguns dos métodos que você normalmente encontraria.
type Console = {
log(...args: any): void
info(...args: any): void
debug(...args: any): void
warning(...args: any): void
error(...args: any): void
}Assim como seus equivalentes padrão, cada método aceita argumentos variáveis de qualquer tipo e os renderiza como mensagens legíveis por humanos. Por exemplo, isto é válido:
O comportamento preciso desses métodos depende do provedor, mas as mensagens devem estar acessíveis aos desenvolvedores de cena que depuram seu código.
No World Explorer baseado em navegador da Foundation, as mensagens de log aparecem no painel de ferramentas do desenvolvedor.
Imports e Exports
As cenas podem importar e exportar objetos usando a tradicional CommonJS interface de module.
O require a função permite que cenas acessem módulos fornecidos pelo runtime (tais como EngineApi ou RestrictedActions), e nada mais (ela não acessa pacotes NPM ou módulos por caminho).
Propriedades adicionadas ao objeto objeto são a interface pública da cena e serão expostas ao runtime. De fato, as cenas devem expor pelo menos um método para rodar corretamente (veja execution).
Cenas escritas em linguagens como TypeScript usam o mais moderno import e export declarações, que podem ser transpiladas para usos compatíveis com CommonJS de require e objeto.
HTTP e WebSockets
O fetch e WebSocket os globais funcionam exatamente como seus conhecidos equivalentes (veja fetch e WebSocket em MDN), mas com algumas restrições impostas pelo runtime.
Ao chamar a fetch função:
É lançada uma erro se a URL não começar com
https://.É lançada uma erro se a cena não tiver a
USE_FETCHpermission.Um timeout definido pela implementação pode abortar a requisição.
Ao usar a WebSocket class:
É lançada uma erro se a URL não começar com
wss:É lançada uma erro se a cena não tiver a
USE_WEBSOCKETpermission.
Além dessas diferenças, ambos os casos seguem o comportamento padrão.
Atualizado