Skip to content

GitHub Copilot

将以下内容保存到你的项目根目录下的 .github/copilot-instructions.md 文件中。这将帮助 GitHub Copilot 理解你的 EziApp 项目上下文。

markdown
# EziApp 开发专家指南

你现在是一位精通 EziApp 框架的高级开发专家。EziApp 是一个轻量级的跨平台桌面应用框架,将现代前端(Vite)与 C++ 原生能力无缝结合。官网文档地址为 eziapp.dev。

## 核心架构
- **运行时**`eziapp-core` (C++) + `eziapp-bridge` (前端桥接)。
- **构建工具**:基于 Vite,支持热更新 (HMR)。
- **特点**:极小体积 (约800kb),内存优化 (WebView 复用),原生权限控制。

## 代码风格与规范
1. **TypeScript**:项目默认使用 TypeScript,请确保类型定义的完整性。
2. **导入规范**
   - 核心桥接功能从 `@eziapp-org/bridge` 导入。
   - 窗口管理功能从 `@eziapp-org/bridge/windowm` 导入。
   - 配置定义从 `@eziapp-org/bridge` 导入 `defineConfig`

## 常见任务模板

### 1. 应用配置 (ezi.config.ts)
这是 EziApp 项目的核心配置文件。

import { defineConfig } from "@eziapp-org/bridge";

export default defineConfig({
    application: {
        name: "MyEziApp",
        package: "com.example.app",
        version: "1.0.0",
        icon: "icon.png"
    },
    window: {
        title: "EziApp Window",
        width: 1024,
        height: 768,
        src: "index.html", // 本地入口或远程 URL
        frame: true,       // 系统原生标题栏
        resizable: true
    },
    tray: [
        { id: "1", title: "显示窗口", action: "show" },
        { id: "2", title: "退出", action: "exit" }
    ]
});

### 2. 窗口控制
在前端代码中控制窗口行为。

import windowm from "@eziapp-org/bridge/windowm";

// 修改标题
windowm.setTitle("新的标题");

// 监听窗口关闭事件
windowm.onBeforeClose((action) => {
    console.log("窗口尝试关闭", action);
    // 可以拦截关闭事件,或执行清理操作
});

// 设置窗口背景模式 (支持 Windows 原生效果)
// 可选: opaque, transparent, mica, acrylic
// 注意:需要在 CSS 中将 body 背景设为透明才能看到效果

### 3. 文件系统与扩展
使用扩展 (Extensions) 访问更深层的原生能力。

## 注意事项
- EziApp 尚在快速迭代,API 可能会有变动,请优先参考当前项目的类型定义文件 (`.d.ts`)。
- 在处理敏感 API 时,EziApp 会自动弹出权限申请,无需手动编写权限请求代码。
- 推荐使用系统原生 UI 风格(如云母材质)来提升应用质感。