Bootstrap 进程负责初始化 Deno 运行时环境,设置全局对象,加载扩展,并准备 JavaScript 执行上下文。此过程发生在主运行时和工作线程运行时启动期间,并且为每种执行模式提供不同的配置。
有关触发 Bootstrap 的 CLI 命令处理的信息,请参阅 命令处理。有关 Bootstrap 期间初始化的扩展系统的详细信息,请参阅 运行时架构。
Bootstrap 进程遵循结构化的初始化序列,该序列可准备 JavaScript 运行时环境。该过程根据执行模式(主运行时 vs. 工作线程)有所不同,但遵循相似的核心步骤。
来源: runtime/js/99_main.js790-989 runtime/js/99_main.js991-1111
Bootstrap 配置通过 BootstrapOptions 结构体进行管理,其中包含运行时参数和功能标志。
来源: runtime/worker_bootstrap.rs88-156 runtime/worker_bootstrap.rs167-201
主运行时 Bootstrap 进程设置了主要的 Deno 执行环境,具有完整的 API 访问和全局对象配置。
来源: runtime/js/99_main.js790-989
工作线程运行时 Bootstrap 配置了一个沙箱环境,具有不同的全局属性和受限的 API 访问。
来源: runtime/js/99_main.js991-1111
在 Bootstrap 过程中,Deno 会加载和初始化各种扩展,这些扩展提供 Web API 和 Deno 特有的功能。
来源: runtime/js/99_main.js6-96 runtime/js/90_deno_ns.js1-236 runtime/lib.rs3-31
Bootstrap 进程根据执行环境配置不同的全局对象和属性。
| 属性 | 主运行时 | 工作线程运行时 | 目的 |
|---|---|---|---|
globalThis.name | "" | Worker name | Window/Worker 标识 |
globalThis.close | windowClose() | workerClose() | 环境清理 |
globalThis.closed | windowIsClosing | 不适用 | Window 状态跟踪 |
globalThis.postMessage | 不适用 | postMessage() | Worker 通信 |
globalThis.importScripts | 不适用 | importScripts() | 经典 Worker 脚本加载 |
| 原型 | Window.prototype | DedicatedWorkerGlobalScope.prototype | 全局作用域类型 |
来源: runtime/js/99_main.js907-916 runtime/js/99_main.js1025-1039
Bootstrap 配置全局错误处理和事件系统,这些系统负责管理运行时异常和生命周期事件。
来源: runtime/js/99_main.js326-395 runtime/js/99_main.js414-462 runtime/js/99_main.js924-927
Bootstrap 根据配置处理不稳定的功能标志并有选择性地公开实验性 API。
来源: runtime/js/99_main.js955-977 runtime/js/99_main.js484-499 runtime/js/90_deno_ns.js171-235
Bootstrap 过程根据执行模式调整行为,配置不同的功能和 API。
| 模式 | 判别符 | 特性 | Bootstrap 行为 |
|---|---|---|---|
无 | 0 | 标准运行时 | 基本功能集 |
工作器 | 1 | Worker API | 工作线程特有全局变量 |
Run | 2 | 完整的 Deno API | 完整的功能集 |
Repl | 3 | REPL 功能 | 交互模式设置 |
Eval | 4 | 评估模式 | 最小设置 |
测试 | 5 | Testing API | 测试工具集成 |
Bench | 6 | 基准测试 | 性能测量 |
ServeMain/ServeWorker | 7 | HTTP 服务 | 服务器特定功能 |
Jupyter | 8 | Jupyter 集成 | Notebook 环境 |
来源: runtime/worker_bootstrap.rs12-56 runtime/js/99_main.js778-788