全局变量
场景运行时除了标准工具(例如 Promise, Date 或 Math.
全局变量
运行时会在场景的全局作用域中注入 6 个定义:
console:标准console对象。模块:一个容器,用于exports对象。require:一个按名称加载运行时提供模块的函数。fetch:浏览器fetch函数的受限实现。WebSocket:浏览器WebSocket类。
以上所有内容都定义为只读属性,因此不能重新赋值。其中一些在使用时会抛出异常,除非向场景授予某些 权限 权限。
Console
场景可以访问一个 console 对象,类似于浏览器或 Node 环境提供的对象,不过仅限于你通常能找到的部分方法。
type Console = {
log(...args: any): void
info(...args: any): void
debug(...args: any): void
warning(...args: any): void
error(...args: any): void
}和标准对应方法一样,每个方法都接受任意类型的可变参数,并将它们渲染为人类可读的消息。例如,下面是有效的:
这些方法的确切行为取决于提供方,但这些消息必须能供调试代码的场景开发者访问。
导入与导出
场景可以使用传统的 CommonJS 模块接口来导入和导出对象。
该 require 函数允许场景访问运行时提供的模块(例如 EngineApi 或 RestrictedActions),除此之外别无其他(它 不会 通过路径访问 NPM 包或模块)。
添加到 exports 对象中的属性就是场景的公共接口,并会暴露给运行时。实际上,场景 必须 至少暴露一个方法才能正常运行(参见 执行).
HTTP 和 WebSocket
该 fetch 和 WebSocket 全局变量的工作方式与其广为人知的对应对象完全相同(参见 fetch 和 WebSocket MDN 中的说明),但运行时会强制施加一些限制。
在调用 fetch 函数时:
如果 URL 不以
https://.开头,则会抛出错误。
USE_FETCH权限.实现定义的超时可能会中止请求。
在使用 WebSocket 类时:
如果 URL 不以
wss:开头,则会抛出错误。
USE_WEBSOCKET权限.
除这些差异外,两种情况都遵循标准行为。
最后更新于