JavaScript 环境

我们将于 2023 年晚些时候停用助手功能,但您仍然可以使用旧版本的 Sketch 或命令行界面使用它。了解更多信息

Sketch 助手是跨平台的,可以在 Sketch 和 Node.js 环境中运行。基于Sketch 助手模板 的助手已经可以跨平台运行。

以下是每个环境的功能、限制和构建要求的详细概述。

Sketch JavaScriptCore

Sketch 中的助手运行在JavaScriptCore 中,这是为 Safari 提供动力的相同 JavaScript 引擎,它速度很快,并支持许多现代 JavaScript 语言功能。

但是,它具有以下重要限制

  • 没有浏览器 API
  • 本机 Node.js 模块不可用
  • 不支持 CommonJS 和 ESM 等模块系统

这些限制对开发跨平台助手时需要考虑的影响如下

  • 由于没有模块系统,助手需要为 Sketch 打包,在我们模板 存储库中,我们目前使用 Webpack 来完成此操作。当 Sketch 加载助手包时,它会在 package.json 中的 sketch 属性中查找包 (类似于 Node 如何通过 main 属性加载包)。
  • 需要注意的是,不要使用 JavaScriptCore 未提供的 API,这也意味着不要使用任何使用此类 API 的 npm 模块。

如果您想探索 JavaScriptCore 提供的环境及其限制,您可以在 Mac 上使用以下命令打开 REPL

/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Helpers/jsc

Node.js

助手是标准的 JavaScript 包。除了编译 TypeScript 的额外步骤外,我们的模板 在 Sketch 包旁边构建了一个普通的 Node.js 包,并在 package.json 中的 main 属性中公开了一个 CommonJS 入口点。

此类助手可以使用 Node.js 的全部功能,但请记住,如果您使用任何本机 Node.js 模块和 I/O 功能,那么您的助手将与 JavaScriptCore 不兼容,并且无法在 Sketch 中运行。