零基础的 PhotoShop CEP 6 开发教程 「 3 」CEP 的运行机制

《零基础的 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版了


零基础的 PhotoShop CEP 6 开发教程 「 3 」CEP 的运行机制_第1张图片
一个面板实际上就是一个网页

一个 CEP 插件实际上是一个在显示在宿主程序面板窗口中的网页,通过提供的接口与宿主程序进行交互。
这里要分清 CEP 扩展与宿主程序的关系:

零基础的 PhotoShop CEP 6 开发教程 「 3 」CEP 的运行机制_第2张图片
  • 宿主程序
    例如一个 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 后缀,这就是上篇文章提到的插件要定义的 ./jsx/Source1.jsx 文件。
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 个引擎中传递信息是一件麻烦的事。

你可能感兴趣的:(零基础的 PhotoShop CEP 6 开发教程 「 3 」CEP 的运行机制)