Figma 是一个流行的在线设计工具,可以支持设计师们在云端协作编辑图形和 UI 元素。Figma 可以通过 figma-jsonrpc 接口与外部 JavaScript 代码进行通信,这为前端开发人员提供了更加便捷的操作 Figma 内容的方式。
在本文中,我们将介绍如何使用 npm 包 figma-jsonrpc 与 Figma 进行交互,并提供详细的代码示例和指导意义。
安装 figma-jsonrpc
首先,我们需要在项目中安装 figma-jsonrpc 包。运行以下命令来安装该包:
npm install figma-jsonrpc
连接 Figma
我们可以使用 figma-js 包来建立与 Figma 的连接。figma-jsonrpc 包使用了 figma-js 包中的某些功能来调用 Figma 的插件 API。
在你的代码中,我们需要从 figma-js 包中导入 figma
对象,并使用该对象来建立与 Figma 的连接。这个对象将在后续中用于调用 Figma API。
-- -------------------- ---- ------- ------ - ----------- - ---- ------------------ ------ - ---------------- - ---- ---------------- ------ - ----- - ---- --------- ----- -------- ------ - -- --- ----- --- ----- ---------------- - ------------------ ----- ------------------- ------- ------------ --- -- ----- ----- ------- ----- --------------------------------- - ----- ----------- - -- --------------------- -
上面的代码中,createConnection
函数用于建立与 Figma 的连接。figmaPlugin
对象则包含了用于 Figma 插件开发的一些工具。我们也在代码中使用了一个名为 delay
的辅助函数,用于暂停执行一段时间以等待连接,这个函数可以自己实现。
Figma 的 JSON-RPC 协议
Figma 使用一种基于 JSON 的协议,称为 JSON-RPC,来进行插件 API 通信。该协议支持建立请求-响应模型,其中插件会发送一个请求到 Figma,Figma 会返回一个响应结果,每个请求都有一个唯一的请求 ID,用于标识该请求和响应对。
对于 JSON-RPC 协议,我们需要遵守如下要求:
- 请求和响应的数据都是 JSON 格式。
- 请求对象必须包含一个
jsonrpc
属性,指定 JSON-RPC 版本,也必须包含一个id
属性,用于标识该请求。 - 对于成功的响应,对象必须包含一个
result
属性和与请求 ID 相同的id
属性,也必须包含一个jsonrpc
版本号。 - 对于失败的响应,对象必须包含一个
error
属性,包含错误信息和与请求 ID 相同的id
属性,也必须包含一个jsonrpc
版本号。
以上述要求,我们可以编写一个用于向 Figma 发送请求的函数:
-- -------------------- ---- ------- ----- -------- ----------------------- ----- ---------- - ------ --- ----------------- ------- -- - --- - ----- --------- - ------------------------------- -------------------------------------------- -- ------ -- -- - ---------------- --- ------------------------------------------- -- ----- -- -- - -------------- --- - ----- ------- - -------------- - --- -
上面的代码中,我们定义了一个名为 sendRequest
的函数,用于向 Figma 发送请求。该函数允许我们传递任意类型的请求数据,使用 Promise 进行响应的跟踪。
sendRequest
函数将一个请求发送到 Figma,并导出一个 Promise,该 Promise 将在成功响应时被解析为成功响应结果。如果发生错误,则该 Promise 将被拒绝为错误值。
函数通过 pluginConnection.send
函数将请求发送到 Figma。然后,我们注册了 pluginConnection.once
函数以监听与请求相关的结果。一旦 Figma 返回一个成功的结果,resolve
将被调用,否则 reject
得到响应错误。
Figma API 调用
Figma API 允许我们调用插件中可用的一些功能。要调用 Figma API,请使用 sendRequest
函数向 Figma 发送一个请求以调用相关功能。
下面是使用 Figma API 加载文本节点的一个示例:
-- -------------------- ---- ------- ----- -------- -------------------- -------- ----------------- - ------ ---------------------------------- ----- ---------------- -------- ------ ----- - ----- ------- --- ------- -- ---------- ---- -- -- ---------- -- ------------------ -
上面的代码中,我们使用 sendRequest
函数发送一个请求,请求获取一个 Figma 节点的反射数据。我们在请求中指定了该节点的 ID。在获取到反射数据时,我们对其进行解析,并返回一个 Promise
对象,该对象解析为一个 TextNode
类型。
为 Figma 注册事件
我们几乎总是需要在我们的插件中注册用于处理 Figma 事件的事件处理程序。为此,我们可以使用 pluginConnection.on
函数注册事件处理程序,该函数允许我们指定要监听的事件和一个回调函数。
以下是一个注册文本节点选择事件的示例:
-- -------------------- ---- ------- ----- -------- ----------------------------------- - -- ---------- -------------------- ------------------ ----- ----------- -------- ------------ -- - ----- ----------------- - ----------------------- -- ---------------- - -- ----------- -- --------- ----- ------------------------------------------- - -- -
在上述示例代码中,我们使用 pluginConnection.on
函数注册了名为 selectionchange
的事件监听器。该监听器将在 Figma 中选择文本节点时触发,并给出选中节点的 SceneNode 列表。处理程序过滤出 TextNode,并将这些节点传递给 handleSelectedTextNodes
函数进行处理。
结论
在本文中,我们学习了如何使用 npm 包 figma-jsonrpc,建立与 Figma 的连接、注册事件监听器以及使用 Figma API 进行调用。可能需要花费时间熟悉关键代码和进行调试,但是使用这些技术将为前端开发人员提供更加便捷的方法来操作 Figma 中的内容。
使用 figma-jsonrpc,我们可以通过 Figma 的 JSON-RPC 协议与 Figma 进行通信,同时可以令开发人员更加轻松地处理 Figma 中的图形元素并进行在线协作设计。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f337765dbf7be33b2566de7