# 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. 总结:我们要关注的重点
在接下来的重构工作中,我们主要关注以下流程:
1. **Vue (前端)**: 在 `src/view` 中编写 UI 界面。
2. **调用**: 使用 `src/utils/cep.ts` 中的 `evalFile` 或 `evalScript` 调用 JSX。
3. **JSX (后端)**:
- 在 `src/jsx/index.ts` 中注册导出的函数。
- 复杂的业务逻辑写在 `src/jsx/function` 中。
- 通用的底层操作 (AM/图层) 优先调用 `src/jsx/utils/ActionManager.ts` 和 `LayerUtils.ts`。
这样分层清晰,便于我们逐步迁移 `psmark` 的旧脚本。