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.

circle-info

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:

  1. console: uma versão simplificada do típico console .

  2. objeto: um objeto onde a cena pode adicionar sua interface públicaarrow-up-right.

  3. module: um contêiner para os objeto .

  4. require: uma função para carregar módulos fornecidos pelo runtime por nome.

  5. fetch: uma implementação restrita do fetch function.

  6. WebSocket: uma implementação restrita do WebSocket class.

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 permissionsarrow-up-right 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.

circle-info

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 CommonJSarrow-up-right interface de module.

O require a função permite que cenas acessem módulos fornecidos pelo runtime (tais como EngineApiarrow-up-right ou RestrictedActionsarrow-up-right), 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 executionarrow-up-right).

circle-info

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 fetcharrow-up-right e WebSocketarrow-up-right 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_FETCH permissionarrow-up-right.

  • Um timeout definido pela implementação pode abortar a requisição.

Ao usar a WebSocket class:

Além dessas diferenças, ambos os casos seguem o comportamento padrão.

Atualizado