Globales
El tiempo de ejecución de la escena garantiza la existencia de ciertos objetos y funciones dentro del entorno sandboxed de JavaScript, además de las utilidades estándar como Promise, Date o Math.
Los globals descritos a continuación son conceptos típicos de JavaScript, pero están adaptados al runtime de escenas de Decentraland y pueden no comportarse idénticamente a sus contrapartes en entornos de navegador o Node.
Globals
El runtime inyecta 6 definiciones en el ámbito global de la escena:
console: una versión simplificada del típicoconsole.objeto: un objeto donde la escena puede añadir sus interfaz pública.module: un contenedor para elobjeto.La función global require: una función para cargar módulos proporcionados por el runtime por nombre.fetch: una implementación restringida delfetchfunction.WebSocket: una implementación restringida delWebSocketclass.
Todos estos están definidos como propiedades de solo lectura, por lo que no pueden reasignarse. Algunos lanzarán excepciones cuando se usen a menos que se otorguen ciertos permissions se concedan a la escena.
Console
Las escenas tienen acceso a un console objeto, muy parecido al que proporciona un navegador o un entorno Node, aunque limitado a solo algunos de los métodos que normalmente encontrarías.
type Console = {
log(...args: any): void
info(...args: any): void
debug(...args: any): void
warning(...args: any): void
error(...args: any): void
}Al igual que sus contrapartes estándar, cada método acepta argumentos variables de cualquier tipo y los representa como mensajes legibles por humanos. Por ejemplo, esto es válido:
El comportamiento preciso de estos métodos depende del proveedor, pero los mensajes deben ser accesibles para los desarrolladores de escenas que depuran su código.
En el World Explorer basado en navegador de la Foundation, los mensajes de log aparecen en el panel de herramientas de desarrollo.
Imports and Exports
Las escenas pueden importar y exportar objetos usando la tradicional CommonJS module interface.
El La función global require function permite a las escenas acceder a módulos proporcionados por el runtime (como EngineApi o RestrictedActions), y nada más (no no accede a paquetes NPM o módulos por ruta).
Las propiedades añadidas al objeto objeto son la interfaz pública de la escena y se expondrán al runtime. De hecho, las escenas deben exponer al menos un método para ejecutarse correctamente (ver ejecución).
Las escenas escritas en lenguajes como TypeScript usan el más moderno import y export statements, que pueden transpilarse a usos compatibles con CommonJS de La función global require y objeto.
HTTP and WebSockets
El fetch y WebSocket globals funcionan exactamente como sus contrapartes bien conocidas (ver fetch y WebSocket en MDN), pero con algunas restricciones impuestas por el runtime.
Al llamar a la fetch function:
Se lanza un error si la URL no comienza con
https://.Se lanza un error si la escena no tiene el
USE_FETCHpermission.Un timeout definido por la implementación puede abortar la solicitud.
Al usar la WebSocket class:
Se lanza un error si la URL no comienza con
wss:Se lanza un error si la escena no tiene el
USE_WEBSOCKETpermission.
Aparte de estas diferencias, ambos casos siguen el comportamiento estándar.
Última actualización