文档手册

Bootstrap execution mode

2024-07-18 16:40:49

Bootstrap execution mode

当你在提供文件的情况下启动 scapp[.exe] 时,引导执行模式是有效的.js(通常是run.js)。

引导 JS 代码的主要目的是在创建任何窗口之前配置和运行一些准备代码。

以下是典型run.js代码的内容:


import * as env from "@env";
import * as sys from "@sys";

let startup;
let gfx = "gpu"; // use best GPU backend...

switch(env.PLATFORM) {
case "Windows":
   startup = "main-win.js";
break;
case "OSX":
   startup = "main-mac.js";
   gfx = "opengl"; // force using OpenGL instead of Metal
break;
default:
   startup = "main-linux.js";
break;
}

application.start(gfx); // configure graphics backend

const mainWindow = new Window({
url:__DIR__ + "hello.htm",
parameters: {} // parameters to pass
});
mainWindow.on("close",() => application.quit(0));

//... other initialization ...
let quitVal = application.run(); // message pump loop
//... shutdown ...

在这里,我们看到图形后端配置和主消息泵循环。

Bootstrap mode runtime

Bootstrap 阶段在特殊简化环境中运行:

  • 所有与 DOM 相关的函数都不可用 - 没有 Document、Element 和其他相关的类和对象;

  •  没有 fetch() API;

  • 没有 setTimeout 和 setInterval;

  •  没有 post() API;

但是模块@env、@sys和@sciter都在那里,所以引导 JS 可以读取文件、创建 TCP 套接字等。

唯一额外的特定于 bootstrap 的命名空间是具有以下功能的应用程序:

  • application.start(gfx) 选择要使用的图形图层。GFX是以下之一:

    • “Raster” - 软件光栅化后端;

    • “direct2d-warp” - 仅限 Windows;Direct2d WARP 后端;

    • “direct2d” - 仅限 Windows;Direct2D GPU 后端 - Windows 上的默认值;

    • “OpenGL” - 所有平台;Skia/OpenGL 后端;

    • “vulkan” - Windows、Linux;Skia/Vulkan 后端;

    • “metal” - 仅限 MacOS;Skia/金属后端;

    • “gpu” - 默认值;使用可用的最佳(最快)后端。在某些 [旧] 系统上,现代后端(Metal、Vulkan)可能工作不可靠,因此您可以选择其他后端,例如“opengl”。

  • application.run():int 此函数将启动UI应用程序的所谓消息泵循环。该函数仅在发出时 application.quit() 返回;

  • application.quit(retval: int) 请求退出 application.run() 循环。run() 函数将返回该 retval 值。