6.5 KiB
6.5 KiB
DesignerCEP 项目结构文档
本文档详细说明了 DesignerCEP/Designer 项目的目录结构及各核心文件的作用,帮助开发者快速理解项目架构。
1. 核心目录结构 (src)
src 是项目的源代码目录,主要分为 前端 UI (Vue) 和 后端逻辑 (JSX/ExtendScript) 两部分。
📂 src/
| 文件/目录 | 说明 |
|---|---|
App.vue |
Vue 应用的根组件,定义了全局的布局结构。 |
main.ts |
Vue 应用的入口文件,负责初始化 Vue 实例、挂载路由和插件。 |
api/ |
存放前端与后端接口交互的代码 (虽然是 CEP,但也可能涉及部分网络请求)。 |
assets/ |
静态资源目录,存放图片、字体等。 |
components/ |
Vue 通用组件库,存放可在多个页面复用的 UI 组件。 |
view/ |
Vue 页面目录,存放具体的业务页面 (如 Login.vue, Home.vue)。 |
router/ |
路由配置目录,定义了页面跳转规则。 |
utils/ |
前端通用工具函数库。 |
jsx/ |
核心 Photoshop 交互逻辑代码 (见下文详细说明)。 |
2. Photoshop 交互核心 (src/jsx)
src/jsx 目录包含了所有在 Photoshop 内部执行的 ExtendScript 代码。这部分代码会被编译为 index.js 供 CEP 调用。
📂 src/jsx/
| 文件/目录 | 说明 |
|---|---|
index.ts |
JSX 入口文件。导出了供前端调用的所有高级函数。可以理解为 CEP 插件的 "后端 API 控制器"。 |
tsconfig.json |
JSX 部分的 TypeScript 配置文件,确保 ExtendScript 代码被正确编译(编译为 ES3 兼容代码)。 |
types/ |
存放 .d.ts 类型定义文件,用于支持 TypeScript 开发 Photoshop 脚本。 |
📂 src/jsx/utils/ (通用工具库)
这是我们本次重构新建的目录,用于存放可复用的底层工具函数。
| 文件 | 作用详解 |
|---|---|
ActionManager.ts |
ActionManager (AM) 低级操作库。 封装了 loadSelection (载入选区), fill (填充), newDocument (新建文档) 等通过 ActionDescriptor 调用 Photoshop 底层功能的函数。 |
LayerUtils.ts |
图层操作工具库。 包含了 getAllLayers (获取所有图层), findLayerByName (按名查找), selectLayerByName (选中图层) 等 DOM 层面的图层辅助函数。 |
📂 src/jsx/function/ (业务逻辑封装)
这里存放封装好的高级业务类。
| 文件/目录 | 说明 |
|---|---|
abstract.ts |
定义了一些抽象基类或接口 (目前看来可能是作为一个基类模板)。 |
index.ts |
导出 g_func 等全局对象,汇集了所有功能模块。 |
ps/api.ts |
核心 API 实现类。包含了 PSApi, MyLayer, MyDocument 等类。- 这是一个庞大的文件,封装了大量对 Photoshop 的操作。 - 很多功能与我们的 ActionManager.ts 类似,但以类的形式组织。- 注意: 该文件定义了全局的 executeAction 类型,我们在写新代码时要注意兼容。 |
3. 前端工具库 (src/utils)
| 文件 | 说明 |
|---|---|
cep.ts |
CEP 桥接工具。封装了 CSInterface,提供了前端调用 JSX(evalScript)、监听事件、获取路径等功能。这是 Vue 与 Photoshop 对话的桥梁。 |
request.ts |
封装了 axios 请求,用于网络通信 (如登录、数据同步)。 |
common.ts |
通用的 JS 辅助函数 (如日期格式化等)。 |
4. 总结:我们要关注的重点
在接下来的重构工作中,我们主要关注以下流程:
- Vue (前端): 在
src/view中编写 UI 界面。 - 调用: 使用
src/utils/cep.ts中的evalFile或evalScript调用 JSX。 - JSX (后端):
- 在
src/jsx/index.ts中注册导出的函数。 - 复杂的业务逻辑写在
src/jsx/function中。 - 通用的底层操作 (AM/图层) 优先调用
src/jsx/utils/ActionManager.ts和LayerUtils.ts。
- 在
这样分层清晰,便于我们逐步迁移 psmark 的旧脚本。