内容提要
Adobe设计软件插件类型包括ExtendScript、CEP、UXP和C++。CEP基于前端技术开发面板,但需通过JSX访问宿主,两端隔离且在PS中会阻塞渲染。UXP是未来方向,可直接访问宿主并支持异步,但目前仅PS2021+支持且API不全。作者建议现阶段PS面板开发仍选CEP,并分享了学习资料与开发经验。
延伸解读
CEP 与 UXP 的现状与选择建议
文章指出,UXP 是未来方向,能直接访问宿主且支持异步,但截至2022年4月仅支持 PS2021 及以上版本,且 API 不全。对于 PS 面板开发,作者建议现阶段仍选 CEP,因为设计师群体 PS 版本普遍滞后,UXP 兼容性不足。若为玩票项目,可尝试 UXP。
PS 中 CEP 的异步限制与影响
在 PS 的 CEP 扩展中,调用 JSX 代码会阻塞所有 CEP 代码执行和渲染,导致界面卡顿。例如读取大文件时,面板中的 GIF 会停止播放。这是因为 PS 的 JSX 没有异步支持,且浏览器代码与 JSX 代码互斥。作者指出此问题目前无解,因此无法实现渲染 JSX 执行进度的功能。
开发 CEP 扩展所需的基础与资源
开发 CEP 扩展需要前端基础(HTML、CSS、JavaScript),若开发复杂插件,建议掌握模块化和打包工具。由于中文资料稀缺,最好具备英文阅读能力,善用 Google 搜索,带上宿主名称和 script 等关键字。必读资料包括 CEP Extension Cookbook、JavaScript Tools Guide CC 和 After Effects Scripting Guide。
扩展与插件的术语区别
文章澄清了扩展(extension)和插件(plugin)的术语差异:在 Adobe 语境中,C++ 插件称为 plugin,而 CEP 扩展称为 extension。这类似于 Chrome 的扩展与插件之分,plugin 更底层,extension 更应用层。作者建议在教程中尽量使用“CEP 扩展”以避免混淆。
Q&A
Adobe设计软件有哪些插件类型?
Adobe设计软件插件类型包括:ExtendScript脚本、面板插件(Flash面板插件、CEP面板插件、UXP面板插件)、独立客户端和C++插件。
CEP扩展和UXP扩展有什么区别?
CEP扩展基于Chromium渲染,需通过JSX访问宿主,两端代码隔离,且在PS中会阻塞渲染;UXP扩展可直接访问宿主,支持异步,但目前仅PS2021+支持且API不全。
开发CEP扩展需要什么基础?
需要前端开发基础(HTML、CSS、JavaScript),最好具备英文阅读能力,因为国内资料稀少,需查阅英文文档和社区。
为什么PS的CEP扩展中JSX会阻塞渲染?
PS中的JSX没有异步支持,调用JSX代码时会阻塞所有CEP扩展的代码执行和渲染,导致界面卡顿,目前无解。
目前开发PS面板插件应该选择CEP还是UXP?
目前(2022年4月)建议选择CEP,因为UXP仅支持PS2021+且API不全,而多数用户仍在使用旧版PS。
CEP扩展和C++插件有什么区别?
CEP扩展基于前端技术,跨平台,开发效率高;C++插件性能最强,能访问最全面的宿主信息,但开发效率低,不跨平台,适合需要操作二进制数据的场景。