Globais
O runtime da scene garante a existência de certos objetos e funções dentro do ambiente JavaScript em sandbox, para além das utilitárias standard como Promise, Date ou Math.
Globals
O runtime injeta 6 definições no escopo global da scene:
console: uma versão simplificada do típicoconsoleobjeto.exports: um objeto onde a scene pode adicionar a sua interface pública.module: um contentor para oexportsobjeto.require: uma função para carregar módulos fornecidos pelo runtime pelo nome.fetch: uma implementação restrita da função do browserfetchfunção.WebSocket: uma implementação restrita da função do browserWebSocketclasse.
Todas estas são definidas como propriedades só de leitura, por isso não podem ser reatribuídas. Algumas lançarão exceções quando usadas, a menos que certas permissões sejam concedidas à scene.
Console
As scenes têm acesso a um console objeto, semelhante ao fornecido por um browser ou ambiente Node, embora limitado apenas a alguns dos métodos que normalmente encontraria.
type Console = {
log(...args: any): void
info(...args: any): void
debug(...args: any): void
warning(...args: any): void
error(...args: any): void
}Tal como os seus equivalentes standard, cada método aceita argumentos variáveis de qualquer tipo e apresenta-os como mensagens legíveis para humanos. Por exemplo, isto é válido:
O comportamento preciso destes métodos depende do provider, mas as mensagens têm de estar acessíveis aos developers da scene quando fazem debug ao seu código.
Imports e Exports
As scenes podem importar e exportar objetos usando a tradicional CommonJS interface de módulo.
O require A função permite às scenes aceder a módulos fornecidos pelo runtime (como EngineApi ou RestrictedActions), e a mais nada (ela não acede a pacotes NPM nem a módulos por caminho).
As propriedades adicionadas ao exports objeto são a interface pública da scene e serão expostas ao runtime. De facto, as scenes têm de expor pelo menos um método para funcionar corretamente (ver execução).
HTTP e WebSockets
O fetch e WebSocket globals funcionam exatamente como os seus equivalentes conhecidos (ver fetch e WebSocket na MDN), mas com algumas restrições impostas pelo runtime.
Ao chamar a fetch função:
É lançado um erro se o URL não começar por
https://.É lançado um erro se a scene não tiver o
USE_FETCHpermissão.Um timeout definido pela implementação pode abortar o pedido.
Ao usar a WebSocket classe:
É lançado um erro se o URL não começar por
wss:É lançado um erro se a scene não tiver o
USE_WEBSOCKETpermissão.
Para além destas diferenças, ambos os casos seguem o comportamento standard.
Atualizado