零基础的 PhotoShop CEP 6 开发教程 「 3 」C
《零基础的 PhotoShop CEP 6 开发教程》系列目录
「 0 」目录
「 1 」配置开发环境
「 2 」CEP 文件结构
「 3 」CEP 的运行机制
「 4 」Hello World !
「 5 」事件(EVENTS)
「 6 」调用 JSX 并传递信息
「 7 」UI - HTML 开发的一些细节
「 8 」API - 文件读写与二进制数据
「 9 」签名打包与 ZXPSignCmd
「 X 」CEP 更新到 6.1版了
一个面板实际上就是一个网页
一个 CEP 插件实际上是一个在显示在宿主程序面板窗口中的网页,通过提供的接口与宿主程序进行交互。
这里要分清 CEP 扩展与宿主程序的关系:
-
宿主程序
例如一个 PhotoShop 的 CEP 扩展,它的宿主程序就是 PhotoShop ,作为宿主程序的 PhotoShop 有很多内置功能,和一个被称为 ExtendScript 的脚本引擎,通过 ExtendScript 脚本引擎能够调用各种 PhotoShop 的内置功能,比如创建一个图层、设置背景颜色等等。 -
ExtendScript
实际上 ExtendScript 不一定是 JavaScript 还有基于 VBScript 的一套接口,不过这里只针对 JavaScript 来说。
作为 ExtendScript 的 JavaScript 代码会在宿主程序内置的一个 JavaScript VM(虚拟机)中被解析,这就是与 CEP 扩展中的 JavaScript 代码的区别,CEP 扩展中的 JavaScript 代码会在另一个 JavaScript VM 中运行。
我们暂且把CEP 的 JavaScript 解析引擎称为 CEP VM, 运行在其中的代码称为 JavaScript
ExtendScript 的解析引擎称为 ExtendScript VM ,运行在其中的代码简称 JSX ,以示区别。
ExtendScript VM 运行的代码通常保存为 .jsx
后缀,这就是上篇文章提到的插件要定义的 <ScriptPath>./jsx/Source1.jsx</ScriptPath>
文件。
CEP VM 运行的就是 HTML 中的 JavaScript 代码 ,与 ExtendScript VM 是互相独立的,通过 Adobe 提供的CSInterface.js
可以执行 ExtendScript VM 中的方法 (实际上通过 window.__adobe_cep__
就可以了,CSInterface.js
是对 window.__adobe_cep__
中方法的封装),并互相传递数据。
- 2 个 VM 的区别
CEP VM 运行的 JavaScript 支持 Node.js 的,而 JSX 是不支持的。
通常我们在 CEP VM 的 JavaScript 中写主要的逻辑,只有涉及到宿主的操作时才使用 JSX,因为在 2 个引擎中传递信息是一件麻烦的事。