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.

circle-info

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:

  1. console: una versión simplificada del típico console .

  2. objeto: un objeto donde la escena puede añadir sus interfaz públicaarrow-up-right.

  3. module: un contenedor para el objeto .

  4. La función global require: una función para cargar módulos proporcionados por el runtime por nombre.

  5. fetch: una implementación restringida del fetch function.

  6. WebSocket: una implementación restringida del WebSocket class.

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

circle-info

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

El La función global require function permite a las escenas acceder a módulos proporcionados por el runtime (como EngineApiarrow-up-right o RestrictedActionsarrow-up-right), 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ónarrow-up-right).

circle-info

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

  • Un timeout definido por la implementación puede abortar la solicitud.

Al usar la WebSocket class:

Aparte de estas diferencias, ambos casos siguen el comportamiento estándar.

Última actualización