《零基礎(chǔ)的 PhotoShop CEP 6 開(kāi)發(fā)教程》系列目錄
「 0 」目錄
「 1 」配置開(kāi)發(fā)環(huán)境
「 2 」CEP 文件結(jié)構(gòu)
「 3 」CEP 的運(yùn)行機(jī)制
「 4 」Hello World 状知!
「 5 」事件(EVENTS)
「 6 」調(diào)用 JSX 并傳遞信息
「 7 」UI - HTML 開(kāi)發(fā)的一些細(xì)節(jié)
「 8 」API - 文件讀寫(xiě)與二進(jìn)制數(shù)據(jù)
「 9 」簽名打包與 ZXPSignCmd
「 X 」CEP 更新到 6.1版了
一個(gè) CEP 插件實(shí)際上是一個(gè)在顯示在宿主程序面板窗口中的網(wǎng)頁(yè),通過(guò)提供的接口與宿主程序進(jìn)行交互孽查。
這里要分清 CEP 擴(kuò)展與宿主程序的關(guān)系:
宿主程序
例如一個(gè) PhotoShop 的 CEP 擴(kuò)展饥悴,它的宿主程序就是 PhotoShop ,作為宿主程序的 PhotoShop 有很多內(nèi)置功能盲再,和一個(gè)被稱(chēng)為 ExtendScript 的腳本引擎西设,通過(guò) ExtendScript 腳本引擎能夠調(diào)用各種 PhotoShop 的內(nèi)置功能,比如創(chuàng)建一個(gè)圖層答朋、設(shè)置背景顏色等等贷揽。ExtendScript
實(shí)際上 ExtendScript 不一定是 JavaScript 還有基于 VBScript 的一套接口,不過(guò)這里只針對(duì) JavaScript 來(lái)說(shuō)梦碗。
作為 ExtendScript 的 JavaScript 代碼會(huì)在宿主程序內(nèi)置的一個(gè) JavaScript VM(虛擬機(jī))中被解析禽绪,這就是與 CEP 擴(kuò)展中的 JavaScript 代碼的區(qū)別,CEP 擴(kuò)展中的 JavaScript 代碼會(huì)在另一個(gè) JavaScript VM 中運(yùn)行叉弦。
我們暫且把CEP 的 JavaScript 解析引擎稱(chēng)為 CEP VM, 運(yùn)行在其中的代碼稱(chēng)為 JavaScript
ExtendScript 的解析引擎稱(chēng)為 ExtendScript VM 丐一,運(yùn)行在其中的代碼簡(jiǎn)稱(chēng) JSX ,以示區(qū)別淹冰。
ExtendScript VM 運(yùn)行的代碼通常保存為 .jsx
后綴库车,這就是上篇文章提到的插件要定義的 <ScriptPath>./jsx/Source1.jsx</ScriptPath>
文件。
CEP VM 運(yùn)行的就是 HTML 中的 JavaScript 代碼 樱拴,與 ExtendScript VM 是互相獨(dú)立的柠衍,通過(guò) Adobe 提供的CSInterface.js
可以執(zhí)行 ExtendScript VM 中的方法 (實(shí)際上通過(guò) window.__adobe_cep__
就可以了洋满,CSInterface.js
是對(duì) window.__adobe_cep__
中方法的封裝),并互相傳遞數(shù)據(jù)。
- 2 個(gè) VM 的區(qū)別
CEP VM 運(yùn)行的 JavaScript 支持 Node.js 的珍坊,而 JSX 是不支持的牺勾。
通常我們?cè)?CEP VM 的 JavaScript 中寫(xiě)主要的邏輯,只有涉及到宿主的操作時(shí)才使用 JSX阵漏,因?yàn)樵?2 個(gè)引擎中傳遞信息是一件麻煩的事驻民。