@skyfox2000/webui 1.2.6 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +441 -91
- package/lib/assets/modules/{file-upload-Cf9uxE2y.js → file-upload-CZO-pMJd.js} +38 -41
- package/lib/assets/modules/{form-excel-DnROEQ0w.js → form-excel-N-2OYqKv.js} +1 -1
- package/lib/assets/modules/{index-DvbJb5Ha.js → index-BnHnS9ug.js} +2 -2
- package/lib/assets/modules/{index-BkbOMv2e.js → index-CTVMLeDF.js} +1 -1
- package/lib/assets/modules/{index-D4mESG0b.js → index-D9kzQ23e.js} +683 -661
- package/lib/assets/modules/{menuTabs-DgX7pUbX.js → menuTabs-BtOiocOC.js} +196 -175
- package/lib/assets/modules/{toolIcon-C0bp66dj.js → toolIcon-B9Mw9Ktm.js} +1 -1
- package/lib/assets/modules/{uploadList-CWhqNLX9.js → uploadList-B4LxzsC6.js} +3 -3
- package/lib/components/common/icon/index.vue.d.ts +1 -1
- package/lib/es/AceEditor/index.js +3 -3
- package/lib/es/BasicLayout/index.js +3 -3
- package/lib/es/Error403/index.js +1 -1
- package/lib/es/Error404/index.js +1 -1
- package/lib/es/ExcelForm/index.js +4 -4
- package/lib/es/UploadForm/index.js +4 -4
- package/lib/index.d.ts +1 -1
- package/lib/stores/userInfo.d.ts +3 -1
- package/lib/utils/main-openapis.d.ts +0 -1
- package/lib/webui.css +1 -1
- package/lib/webui.es.js +234 -243
- package/package.json +2 -2
- package/src/components/layout/header/headerExits.vue +5 -4
- package/src/components/layout/header/index.vue +4 -2
- package/src/components/layout/header/user.vue +4 -1
- package/src/directives/permission.ts +14 -10
- package/src/index.ts +1 -9
- package/src/stores/appInfo.ts +64 -26
- package/src/stores/pageInfo.ts +1 -0
- package/src/stores/settingInfo.ts +1 -7
- package/src/stores/userInfo.ts +77 -52
- package/src/utils/main-openapis.ts +1 -9
package/README.md
CHANGED
|
@@ -1,104 +1,454 @@
|
|
|
1
|
+
# 微前端子应用基础库 (@skyfox2000/webui)
|
|
1
2
|
|
|
3
|
+
## 项目概述
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
这是一个专为微前端架构设计的企业级前端组件库,提供了完整的后台管理系统通用组件、工具函数、类型定义和业务逻辑封装。该组件库是微前端生态系统的核心基础设施,为各个子应用提供统一的UI组件、数据处理、状态管理和业务功能支持。
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
## 核心特性
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
### 🧩 丰富的组件体系
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
- **表单组件**:完整的表单控件集合,支持复杂表单场景
|
|
12
|
+
- **布局组件**:灵活的页面布局和导航组件
|
|
13
|
+
- **内容组件**:数据展示和交互组件
|
|
14
|
+
- **通用组件**:基础UI组件和工具组件
|
|
15
|
+
- **错误处理**:统一的错误展示和异常处理组件
|
|
16
|
+
|
|
17
|
+
### 🛠️ 强大的工具函数库
|
|
18
|
+
|
|
19
|
+
- **数据处理**:统一的数据查询、保存、删除等操作
|
|
20
|
+
- **表单验证**:完整的表单验证框架和规则引擎
|
|
21
|
+
- **文件处理**:文件上传、下载、Excel处理等功能
|
|
22
|
+
- **缓存管理**:前端缓存策略和数据管理
|
|
23
|
+
- **事件总线**:组件间通信和事件管理
|
|
24
|
+
|
|
25
|
+
### 📋 完整的类型定义
|
|
26
|
+
|
|
27
|
+
- **TypeScript支持**:完整的类型定义和智能提示
|
|
28
|
+
- **业务类型**:页面、表格、表单、树控件等业务类型
|
|
29
|
+
- **工具类型**:按钮、选项、菜单等工具类型
|
|
30
|
+
- **数据类型**:API接口、上传文件等数据类型
|
|
31
|
+
|
|
32
|
+
### 🔗 微前端集成
|
|
33
|
+
|
|
34
|
+
- **状态管理**:基于Pinia的状态管理解决方案
|
|
35
|
+
- **路由管理**:支持微前端的路由集成和导航
|
|
36
|
+
- **主应用通信**:与主应用的数据交互和API调用
|
|
37
|
+
- **图标管理**:动态图标加载和缓存机制
|
|
38
|
+
|
|
39
|
+
## 技术架构
|
|
40
|
+
|
|
41
|
+
### 核心技术栈
|
|
42
|
+
|
|
43
|
+
- **框架核心**:Vue 3.5 + TypeScript 5.8 + Vite 6.3
|
|
44
|
+
- **构建工具**:Vite + Rollup + ESBuild
|
|
45
|
+
- **样式方案**:TailwindCSS 3.4 + PostCSS
|
|
46
|
+
- **代码规范**:ESLint + Prettier
|
|
47
|
+
- **类型生成**:vue-tsc + vite-plugin-dts
|
|
48
|
+
|
|
49
|
+
### 依赖集成
|
|
50
|
+
|
|
51
|
+
- **微前端基础**:@skyfox2000/microbase ^1.2.1
|
|
52
|
+
- **API管理**:@skyfox2000/fapi ^1.1.19
|
|
53
|
+
- **UI组件库**:Ant Design Vue ^4.2.6
|
|
54
|
+
- **状态管理**:Pinia ^2.3.0 + 持久化插件
|
|
55
|
+
- **路由管理**:Vue Router ^4.5.1
|
|
56
|
+
|
|
57
|
+
### 扩展功能
|
|
58
|
+
|
|
59
|
+
- **代码编辑器**:ACE Editor + Vue3-ACE-Editor
|
|
60
|
+
- **Excel处理**:@vue-office/excel + exceljs
|
|
61
|
+
- **数据导出**:@json2csv/plainjs
|
|
62
|
+
- **表单验证**:async-validator
|
|
63
|
+
- **拖拽功能**:vue-draggable-next
|
|
64
|
+
- **消息提示**:vue-m-message
|
|
65
|
+
|
|
66
|
+
## 组件库架构
|
|
67
|
+
|
|
68
|
+
### 1. 表单组件模块 (`/form`)
|
|
69
|
+
|
|
70
|
+
**功能职责**:提供完整的表单控件和输入组件
|
|
71
|
+
|
|
72
|
+
- **基础输入组件**
|
|
73
|
+
|
|
74
|
+
- `input`: 文本输入框组件,支持多种输入类型
|
|
75
|
+
- `textarea`: 多行文本输入组件
|
|
76
|
+
- `autoComplete`: 自动完成输入组件
|
|
77
|
+
- `datePicker`: 日期选择器组件
|
|
78
|
+
- `rangePicker`: 日期范围选择器组件
|
|
79
|
+
|
|
80
|
+
- **选择类组件**
|
|
81
|
+
|
|
82
|
+
- `select`: 下拉选择组件,支持远程数据加载
|
|
83
|
+
- `treeSelect`: 树形选择组件,支持层级数据
|
|
84
|
+
- `cascader`: 级联选择器组件
|
|
85
|
+
- `radio`: 单选按钮组件
|
|
86
|
+
- `checkbox`: 复选框组件
|
|
87
|
+
- `switch`: 开关组件
|
|
88
|
+
- `transfer`: 穿梭框组件
|
|
89
|
+
|
|
90
|
+
- **高级组件**
|
|
91
|
+
|
|
92
|
+
- `aceEditor`: 代码编辑器组件,支持语法高亮
|
|
93
|
+
- `propEditor`: 属性编辑器组件,支持动态属性配置
|
|
94
|
+
- `upload`: 文件上传组件,支持多种上传方式
|
|
95
|
+
|
|
96
|
+
### 2. 布局组件模块 (`/layout`)
|
|
97
|
+
|
|
98
|
+
**功能职责**:提供页面布局和导航相关组件
|
|
99
|
+
|
|
100
|
+
- **页面布局**
|
|
101
|
+
|
|
102
|
+
- `page`: 标准页面布局组件
|
|
103
|
+
- `content`: 内容区域布局组件
|
|
104
|
+
- `header`: 页面头部组件
|
|
105
|
+
- `breadcrumb`: 面包屑导航组件
|
|
106
|
+
|
|
107
|
+
- **导航组件**
|
|
108
|
+
|
|
109
|
+
- `menu`: 菜单导航组件,支持多级菜单
|
|
110
|
+
- `datetime`: 时间显示组件
|
|
111
|
+
|
|
112
|
+
### 3. 内容组件模块 (`/content`)
|
|
113
|
+
|
|
114
|
+
**功能职责**:提供数据展示和交互组件
|
|
115
|
+
|
|
116
|
+
- **数据展示组件**
|
|
117
|
+
- 表格组件:支持分页、排序、筛选等功能
|
|
118
|
+
- 搜索组件:多条件搜索和筛选
|
|
119
|
+
- 工具栏组件:操作按钮和工具集合
|
|
120
|
+
|
|
121
|
+
### 4. 通用组件模块 (`/common`)
|
|
122
|
+
|
|
123
|
+
**功能职责**:提供基础UI组件和工具组件
|
|
124
|
+
|
|
125
|
+
- **基础组件**
|
|
126
|
+
- 按钮组件:各种类型的操作按钮
|
|
127
|
+
- 图标组件:图标显示和管理
|
|
128
|
+
- 提示组件:工具提示和帮助信息
|
|
129
|
+
|
|
130
|
+
### 5. 错误处理模块 (`/error`)
|
|
131
|
+
|
|
132
|
+
**功能职责**:提供错误展示和异常处理组件
|
|
133
|
+
|
|
134
|
+
- **错误页面**
|
|
135
|
+
- 404页面组件:页面未找到处理
|
|
136
|
+
- 异常展示组件:系统异常和错误展示
|
|
137
|
+
|
|
138
|
+
## 工具函数库
|
|
139
|
+
|
|
140
|
+
### 数据处理工具
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// 统一的数据操作接口
|
|
144
|
+
export { doQuery, doExecute, doSave, doDelete } from '@/utils/data';
|
|
145
|
+
|
|
146
|
+
// 表格数据处理
|
|
147
|
+
export { gridQueryList, gridQueryFind, gridRowUpdate, gridStatusUpdate } from '@/utils/table';
|
|
11
148
|
```
|
|
12
149
|
|
|
13
|
-
|
|
150
|
+
### 表单验证工具
|
|
14
151
|
|
|
15
|
-
```
|
|
16
|
-
|
|
152
|
+
```typescript
|
|
153
|
+
// 表单验证框架
|
|
154
|
+
export { initValidate, formValidate, validateData, useInputFactory } from '@/utils/form-validate';
|
|
155
|
+
|
|
156
|
+
// Excel文件处理
|
|
157
|
+
export { validateExcel, processExcelFile } from '@/utils/form-excel';
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 文件处理工具
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// 文件上传下载
|
|
164
|
+
export { downloadBlob, donwloadFromMinio } from '@/utils/download';
|
|
165
|
+
export { AsyncUploader } from '@/utils/file-upload';
|
|
166
|
+
|
|
167
|
+
// 数据导出
|
|
168
|
+
export { exportSelectedRows, exportResults } from '@/utils/export-table';
|
|
17
169
|
```
|
|
18
170
|
|
|
171
|
+
### 缓存和状态管理
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
// 缓存管理
|
|
175
|
+
export { CacheKeys, Cache, initCacheCheck } from '@/utils/cache';
|
|
176
|
+
|
|
177
|
+
// 状态管理
|
|
178
|
+
export { pinia } from '@/stores/pinia';
|
|
179
|
+
|
|
180
|
+
// 选项数据管理
|
|
181
|
+
export { loadOption, unloadOption, getSelectedValues } from '@/utils/options';
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## 类型定义体系
|
|
185
|
+
|
|
186
|
+
### 核心业务类型
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// 页面控制类型
|
|
190
|
+
export type { PageControl, PageControlOption } from '@/typings/page.d';
|
|
191
|
+
|
|
192
|
+
// 表格控制类型
|
|
193
|
+
export type { GridControl, GridControlOption } from '@/typings/table.d';
|
|
194
|
+
|
|
195
|
+
// 表单控制类型
|
|
196
|
+
export type { EditorControl, EditorControlOption } from '@/typings/form.d';
|
|
197
|
+
|
|
198
|
+
// 树控件类型
|
|
199
|
+
export type { TreeControl, TreeControlOption, TreeNode } from '@/typings/tree.d';
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 工具和数据类型
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
// 工具按钮类型
|
|
206
|
+
export type { ButtonTool, ButtonTools, IconTool } from '@/typings/tools.d';
|
|
207
|
+
|
|
208
|
+
// 文件上传类型
|
|
209
|
+
export type { UploadFile, MinioFile } from '@/typings/upload.d';
|
|
210
|
+
|
|
211
|
+
// 选项数据类型
|
|
212
|
+
export type { OptionItemProps, SelectValue } from '@/typings/option.d';
|
|
213
|
+
```
|
|
19
214
|
|
|
20
215
|
## 项目结构
|
|
21
216
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
├──
|
|
28
|
-
├──
|
|
29
|
-
├──
|
|
30
|
-
├──
|
|
31
|
-
│ ├──
|
|
32
|
-
│ └──
|
|
33
|
-
├──
|
|
34
|
-
├──
|
|
35
|
-
├──
|
|
36
|
-
├──
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
├──
|
|
50
|
-
│ ├──
|
|
51
|
-
│ ├──
|
|
52
|
-
│
|
|
53
|
-
│
|
|
54
|
-
├──
|
|
55
|
-
│ ├──
|
|
56
|
-
│ ├──
|
|
57
|
-
│
|
|
58
|
-
|
|
59
|
-
├──
|
|
60
|
-
│ ├──
|
|
61
|
-
│ ├──
|
|
62
|
-
│ └──
|
|
63
|
-
├──
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
217
|
+
```
|
|
218
|
+
@skyfox2000/webui/
|
|
219
|
+
├── src/
|
|
220
|
+
│ ├── assets/ # 静态资源
|
|
221
|
+
│ │ └── global.css # 全局样式
|
|
222
|
+
│ ├── components/ # 组件库
|
|
223
|
+
│ │ ├── form/ # 表单组件
|
|
224
|
+
│ │ │ ├── input/ # 输入框组件
|
|
225
|
+
│ │ │ ├── select/ # 选择器组件
|
|
226
|
+
│ │ │ ├── upload/ # 上传组件
|
|
227
|
+
│ │ │ └── ... # 其他表单组件
|
|
228
|
+
│ │ ├── layout/ # 布局组件
|
|
229
|
+
│ │ │ ├── page/ # 页面布局
|
|
230
|
+
│ │ │ ├── header/ # 页头组件
|
|
231
|
+
│ │ │ ├── menu/ # 菜单组件
|
|
232
|
+
│ │ │ └── ... # 其他布局组件
|
|
233
|
+
│ │ ├── content/ # 内容组件
|
|
234
|
+
│ │ ├── common/ # 通用组件
|
|
235
|
+
│ │ ├── error/ # 错误处理组件
|
|
236
|
+
│ │ └── index.ts # 组件导出
|
|
237
|
+
│ ├── utils/ # 工具函数
|
|
238
|
+
│ │ ├── data.ts # 数据处理工具
|
|
239
|
+
│ │ ├── form-validate.ts # 表单验证工具
|
|
240
|
+
│ │ ├── table.ts # 表格工具
|
|
241
|
+
│ │ ├── file-upload.ts # 文件上传工具
|
|
242
|
+
│ │ └── ... # 其他工具函数
|
|
243
|
+
│ ├── typings/ # 类型定义
|
|
244
|
+
│ │ ├── page.d.ts # 页面类型
|
|
245
|
+
│ │ ├── form.d.ts # 表单类型
|
|
246
|
+
│ │ ├── table.d.ts # 表格类型
|
|
247
|
+
│ │ └── ... # 其他类型定义
|
|
248
|
+
│ ├── stores/ # 状态管理
|
|
249
|
+
│ ├── router/ # 路由管理
|
|
250
|
+
│ ├── directives/ # 自定义指令
|
|
251
|
+
│ ├── const/ # 常量定义
|
|
252
|
+
│ └── index.ts # 主入口文件
|
|
253
|
+
├── lib/ # 构建输出
|
|
254
|
+
│ ├── webui.es.js # ES模块
|
|
255
|
+
│ ├── webui.css # 样式文件
|
|
256
|
+
│ ├── index.d.ts # 类型声明
|
|
257
|
+
│ └── es/ # 按需导入文件
|
|
258
|
+
├── package.json # 项目配置
|
|
259
|
+
├── vite.config.ts # Vite配置
|
|
260
|
+
├── tsconfig.json # TypeScript配置
|
|
261
|
+
└── README.md # 项目说明
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## 安装使用
|
|
265
|
+
|
|
266
|
+
### 安装方式
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
npm install @skyfox2000/webui
|
|
270
|
+
# 或
|
|
271
|
+
pnpm add @skyfox2000/webui
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### 基本使用
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
// 完整导入
|
|
278
|
+
import { usePageFactory, useGridFactory, useEditorFactory, doQuery, formValidate } from '@skyfox2000/webui';
|
|
279
|
+
|
|
280
|
+
// 导入样式
|
|
281
|
+
import '@skyfox2000/webui/webui.css';
|
|
282
|
+
|
|
283
|
+
// 按需导入组件
|
|
284
|
+
import BasicLayout from '@skyfox2000/webui/es/BasicLayout';
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### 页面工厂使用示例
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
import { usePageFactory, useGridFactory } from '@skyfox2000/webui';
|
|
291
|
+
|
|
292
|
+
// 创建页面控制器
|
|
293
|
+
const pageControl = usePageFactory({
|
|
294
|
+
apiUrls: {
|
|
295
|
+
query: '/api/users/query',
|
|
296
|
+
save: '/api/users/save',
|
|
297
|
+
delete: '/api/users/delete',
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
// 创建表格控制器
|
|
302
|
+
const gridControl = useGridFactory({
|
|
303
|
+
columns: [
|
|
304
|
+
{ title: '用户名', dataIndex: 'username' },
|
|
305
|
+
{ title: '邮箱', dataIndex: 'email' },
|
|
306
|
+
{ title: '状态', dataIndex: 'status' },
|
|
307
|
+
],
|
|
308
|
+
});
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## 构建和发布
|
|
312
|
+
|
|
313
|
+
### 本地开发构建
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
# 安装依赖
|
|
317
|
+
pnpm install
|
|
318
|
+
|
|
319
|
+
# 开发构建(链接WebBase库)
|
|
320
|
+
pnpm build:dev
|
|
321
|
+
|
|
322
|
+
# 生产构建
|
|
323
|
+
pnpm build
|
|
324
|
+
|
|
325
|
+
# 类型声明生成
|
|
326
|
+
pnpm build:types
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### 包导出配置
|
|
330
|
+
|
|
331
|
+
```json
|
|
332
|
+
{
|
|
333
|
+
"exports": {
|
|
334
|
+
".": {
|
|
335
|
+
"types": "./lib/index.d.ts",
|
|
336
|
+
"default": "./lib/webui.es.js"
|
|
337
|
+
},
|
|
338
|
+
"./webui.css": {
|
|
339
|
+
"default": "./lib/webui.css"
|
|
340
|
+
},
|
|
341
|
+
"./es/*": {
|
|
342
|
+
"import": "./lib/es/*/index.js",
|
|
343
|
+
"types": "./lib/*.d.ts"
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## 微前端集成
|
|
350
|
+
|
|
351
|
+
### 状态管理集成
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
import { pinia } from '@skyfox2000/webui';
|
|
355
|
+
import { useAppInfo, useUserInfo } from '@skyfox2000/webui';
|
|
356
|
+
|
|
357
|
+
// 在主应用中使用
|
|
358
|
+
app.use(pinia);
|
|
359
|
+
|
|
360
|
+
// 获取应用信息
|
|
361
|
+
const appInfo = useAppInfo();
|
|
362
|
+
const userInfo = useUserInfo();
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### 路由集成
|
|
366
|
+
|
|
367
|
+
```typescript
|
|
368
|
+
import { AppRouter, pendingNavigation } from '@skyfox2000/webui';
|
|
369
|
+
|
|
370
|
+
// 路由导航处理
|
|
371
|
+
if (pendingNavigation.value) {
|
|
372
|
+
pendingNavigation.value.next();
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### 主应用通信
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
import { getHostInfo, getUserInfo, mainAppPush } from '@skyfox2000/webui';
|
|
380
|
+
|
|
381
|
+
// 获取主应用数据
|
|
382
|
+
const hostInfo = getHostInfo();
|
|
383
|
+
const userInfo = getUserInfo();
|
|
384
|
+
|
|
385
|
+
// 主应用路由跳转
|
|
386
|
+
mainAppPush('/target-path');
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## 组件开发指南
|
|
390
|
+
|
|
391
|
+
### 新增组件
|
|
392
|
+
|
|
393
|
+
1. 在对应的组件目录下创建组件文件
|
|
394
|
+
2. 实现组件逻辑和样式
|
|
395
|
+
3. 在组件目录的 `index.ts`中导出组件
|
|
396
|
+
4. 在主 `index.ts`中添加组件导出
|
|
397
|
+
5. 更新类型定义文件
|
|
398
|
+
|
|
399
|
+
### 工具函数开发
|
|
400
|
+
|
|
401
|
+
1. 在 `utils`目录下创建工具函数文件
|
|
402
|
+
2. 实现工具函数逻辑
|
|
403
|
+
3. 在主 `index.ts`中导出工具函数
|
|
404
|
+
4. 添加相应的类型定义
|
|
405
|
+
|
|
406
|
+
### 类型定义规范
|
|
407
|
+
|
|
408
|
+
1. 在 `typings`目录下创建类型定义文件
|
|
409
|
+
2. 使用清晰的命名约定
|
|
410
|
+
3. 添加详细的注释说明
|
|
411
|
+
4. 在主 `index.ts`中导出类型
|
|
412
|
+
|
|
413
|
+
## 性能优化
|
|
414
|
+
|
|
415
|
+
### 构建优化
|
|
416
|
+
|
|
417
|
+
- **Tree Shaking**: 支持按需导入,减少包体积
|
|
418
|
+
- **代码分割**: 组件按需加载,提高加载速度
|
|
419
|
+
- **类型优化**: 独立的类型声明文件,提升开发体验
|
|
420
|
+
- **样式分离**: CSS文件独立打包,支持按需加载
|
|
421
|
+
|
|
422
|
+
### 运行时优化
|
|
423
|
+
|
|
424
|
+
- **缓存机制**: 智能的数据缓存和状态管理
|
|
425
|
+
- **懒加载**: 组件和资源的懒加载机制
|
|
426
|
+
- **防抖节流**: 内置的防抖节流处理
|
|
427
|
+
- **内存管理**: 组件销毁时的内存清理
|
|
428
|
+
|
|
429
|
+
## 版本历史
|
|
430
|
+
|
|
431
|
+
- **v1.2.6**: 当前版本,完整的组件库功能
|
|
432
|
+
- **v1.2.x**: 功能增强和性能优化
|
|
433
|
+
- **v1.1.x**: 基础组件库版本
|
|
434
|
+
- **v1.0.x**: 初始版本
|
|
435
|
+
|
|
436
|
+
## 注意事项
|
|
437
|
+
|
|
438
|
+
1. **依赖管理**: 确保peerDependencies的版本兼容性
|
|
439
|
+
2. **类型安全**: 充分利用TypeScript的类型检查
|
|
440
|
+
3. **样式隔离**: 注意组件样式的作用域和冲突
|
|
441
|
+
4. **性能监控**: 关注组件的渲染性能和内存使用
|
|
442
|
+
5. **版本升级**: 注意破坏性变更和迁移指南
|
|
443
|
+
|
|
444
|
+
## 技术支持
|
|
445
|
+
|
|
446
|
+
- **Vue 3 官方文档**: https://vuejs.org/
|
|
447
|
+
- **Ant Design Vue**: https://antdv.com/
|
|
448
|
+
- **Vite 构建工具**: https://vitejs.dev/
|
|
449
|
+
- **TypeScript**: https://www.typescriptlang.org/
|
|
450
|
+
- **Pinia 状态管理**: https://pinia.vuejs.org/
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
_该微前端子应用基础库是企业级微前端生态系统的核心基础设施,为各个子应用提供统一、高效、可扩展的前端解决方案。_
|