feat: 项目结构优化
This commit is contained in:
108
src/common/constants.ts
Normal file
108
src/common/constants.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
// 渲染进程|主进程常量定义
|
||||
|
||||
export enum IPC_EVENTS {
|
||||
EXTERNAL_OPEN = 'external-open',
|
||||
WINDOW_MINIMIZE = 'window-minimize',
|
||||
WINDOW_MAXIMIZE = 'window-maximize',
|
||||
WINDOW_CLOSE = 'window-close',
|
||||
APP_SET_FRAMELESS = 'app:set-frameless',
|
||||
TAB_CREATE = 'tab:create',
|
||||
TAB_LIST = 'tab:list',
|
||||
TAB_NAVIGATE = 'tab:navigate',
|
||||
TAB_RELOAD = 'tab:reload',
|
||||
TAB_BACK = 'tab:back',
|
||||
TAB_FORWARD = 'tab:forward',
|
||||
TAB_SWITCH = 'tab:switch',
|
||||
TAB_CLOSE = 'tab:close',
|
||||
LOG_TO_MAIN = 'log-to-main',
|
||||
READ_FILE = 'read-file',
|
||||
INVOKE = 'ipc:invoke',
|
||||
INVOKE_ASYNC = 'ipc:invokeAsync',
|
||||
APP_MINIMIZE ='app:minimize',
|
||||
APP_MAXIMIZE ='app:maximize',
|
||||
APP_QUIT ='app:quit',
|
||||
FILE_READ = 'file:read',
|
||||
FILE_WRITE = 'file:write',
|
||||
GET_WINDOW_ID='get-window-id',
|
||||
CUSTOM_EVENT ='custom:event',
|
||||
TIME_UPDATE = 'time:update'
|
||||
}
|
||||
|
||||
export const MAIN_WIN_SIZE = {
|
||||
width: 1440,
|
||||
height: 900,
|
||||
minWidth: 1440,
|
||||
minHeight: 900,
|
||||
} as const
|
||||
|
||||
|
||||
// 定义每个通道的参数和返回值类型
|
||||
interface IPCTypings {
|
||||
// 同步通信
|
||||
[IPC_EVENTS.APP_MINIMIZE]: {
|
||||
params: [window:number]
|
||||
return: {success: boolean, error?: string}
|
||||
}
|
||||
[IPC_EVENTS.APP_MAXIMIZE]: {
|
||||
params: [window:number]
|
||||
return: {success: boolean, error?: string}
|
||||
}
|
||||
[IPC_EVENTS.GET_WINDOW_ID]: {
|
||||
params: []
|
||||
return: number
|
||||
}
|
||||
|
||||
// 异步通信
|
||||
[IPC_EVENTS.FILE_READ]: {
|
||||
params: [filePath: string]
|
||||
return: Promise<{success: boolean, data?: string, error?: string}>
|
||||
}
|
||||
[IPC_EVENTS.FILE_WRITE]: {
|
||||
params: [filePath: string, content: string]
|
||||
return: Promise<{success: boolean, error?: string}>
|
||||
}
|
||||
|
||||
// 事件通信
|
||||
[IPC_EVENTS.TIME_UPDATE]: {
|
||||
params: [time: string]
|
||||
return: void
|
||||
}
|
||||
[IPC_EVENTS.CUSTOM_EVENT]: {
|
||||
params: [message: string]
|
||||
return: void
|
||||
}
|
||||
}
|
||||
|
||||
// 定义IPC API 接口
|
||||
export interface WindowApi {
|
||||
invoke<T extends keyof IPCTypings>(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'],
|
||||
invokeAsync<T extends keyof IPCTypings>(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'],
|
||||
on<T extends keyof IPCTypings>(channel: T, callback: (...args: IPCTypings[T]['params']) => void): () => void
|
||||
send<T extends keyof IPCTypings>(channel: T, ...args: IPCTypings[T]['params']): void,
|
||||
getCurrentWindowId(): number,
|
||||
versions: NodeJS.ProcessVersions,
|
||||
external: {
|
||||
open: (url: string) => void
|
||||
},
|
||||
window: {
|
||||
minimize: () => void,
|
||||
maximize: () => void,
|
||||
close: () => void
|
||||
},
|
||||
app: {
|
||||
setFrameless: (route?: string) => void
|
||||
},
|
||||
tabs: {
|
||||
create: (url?: string) => void,
|
||||
list: () => void,
|
||||
navigate: (tabId: string, url: string) => void,
|
||||
reload: (tabId: string) => void,
|
||||
back: (tabId: string) => void,
|
||||
forward: (tabId: string) => void,
|
||||
switch: (tabId: string) => void,
|
||||
close: (tabId: string) => void,
|
||||
on: (event: 'tab-updated' | 'tab-created' | 'tab-closed' | 'tab-switched', handler: (payload: any) => void) => void
|
||||
},
|
||||
readFile: (filePath: string) => Promise<{success: boolean, data?: string, error?: string}>,
|
||||
logToMain: (logLevel: string, message: string) => void,
|
||||
}
|
||||
Reference in New Issue
Block a user