用AI做一款浏览器

# MauiBrowser

一个基于 .NET MAUI 构建的现代化跨平台浏览器应用程序。

## 项目简介

MauiBrowser 是一个功能完善的桌面浏览器应用,采用最新的 .NET MAUI 技术栈开发,具有原生性能和现代化用户界面。项目专注于 Windows 平台,提供流畅的浏览体验和丰富的功能。

## 功能特性

### 核心浏览器功能

- **多标签页管理**:支持创建、关闭、切换多个标签页,标签页宽度自适应

- **网页导航**:前进、后退、刷新、地址栏输入导航

- **WebView集成**:基于 WebView2 引擎,支持 Cookie 持久化

- **新窗口处理**:自动处理 target=“_blank” 链接,在新标签页中打开

### 窗口状态管理

- **窗口状态记忆**:自动保存和恢复窗口位置、大小和最大化状态

- **多显示器支持**:智能检测窗口位置,防止超出屏幕范围

- **窗口控制**:最小化、最大化、关闭按钮,支持双击标题栏最大化

### 收藏夹功能

- **书签管理**:添加、编辑、删除书签

- **分组管理**:支持默认分组和自定义分组

- **书签图标**:自动获取并显示网站图标

- **收藏夹管理器**:可视化管理所有书签

### 历史记录功能

- **自动记录**:自动记录所有访问的网页

- **历史记录列表**:按时间倒序显示历史记录

- **最近访问**:启动页显示最近访问的网站

- **快速访问**:一键访问常用网站

### 地址栏优化

- **智能布局**:图标与网址间距优化,整体布局紧凑

- **Favicon显示**:多源获取网站图标,支持缓存

- **默认图标**:无图标时显示默认图标

### 用户界面

- **现代化设计**:类 Chrome 风格界面,Material Design 配色

- **交互优化**:悬停效果、点击反馈、平滑动画

- **Toast通知**:操作反馈提示

- **对话框交互**:友好的用户交互体验

### 数据持久化

- **配置管理**:窗口状态、用户设置自动保存

- **书签存储**:JSON 格式存储,易于备份

- **历史记录**:自动保存访问历史

- **数据备份**:支持手动和自动备份

## 技术栈

### 核心技术

- **.NET MAUI**:跨平台 UI 框架

- **C# 9.0+**:主要编程语言

- **XAML**:UI 标记语言

- **.NET 9**:运行时框架

### 平台特定技术

- **Windows App SDK**:Windows 平台特定功能

- **WebView2**:网页渲染引擎

- **WinRT Interop**:Windows 运行时互操作

### 数据管理

- **JSON 序列化**:配置文件和数据存储

- **文件系统存储**:本地数据持久化

- **Cookie 持久化**:网页会话状态保存

## 系统要求

- **操作系统**:Windows 10 版本 1809 或更高版本

- **运行时**:.NET 9.0 Runtime

- **WebView2**:Microsoft Edge WebView2 Runtime

## 安装说明

### 从源码构建

1. **克隆仓库**

```bash

git clone

cd MauiBrowser0404

```

2. **安装 .NET 9 SDK**

3. **还原依赖**

```bash

dotnet restore

```

4. **构建项目**

```bash

dotnet build --framework net9.0-windows10.0.19041.0

```

5. **运行应用**

```bash

dotnet run --framework net9.0-windows10.0.19041.0

```

### 发布版本

构建发布版本:

```bash

dotnet publish -c Release -f net9.0-windows10.0.19041.0 -r win10-x64 --self-contained

```

发布文件位于:`bin\Release\net9.0-windows10.0.19041.0\win10-x64\publish\`

## 使用说明

### 基本操作

1. **打开网页**

  • 在地址栏输入网址,按 Enter 键访问

  • 点击"新建标签"按钮创建新标签页

2. **管理标签页**

  • 点击标签页切换

  • 点击标签页上的 × 关闭标签页

  • 点击 + 按钮创建新标签页

3. **添加收藏**

  • 点击地址栏右侧的 ★ 按钮

  • 选择"添加到收藏"

  • 选择分组或创建新分组

  • 点击"确定"保存

4. **查看历史记录**

  • 点击右上角 ⋯ 按钮

  • 选择"历史记录"

  • 点击历史记录项访问网页

5. **管理收藏夹**

  • 点击右上角 ⋯ 按钮

  • 选择"收藏管理器"

  • 在管理器中编辑、删除书签

### 窗口控制

- **最小化**:点击标题栏的 — 按钮

- **最大化/还原**:点击标题栏的 □ 按钮,或双击标题栏

- **关闭**:点击标题栏的 × 按钮

### 数据备份

应用程序会自动保存:

- 窗口状态(位置、大小)

- 书签数据

- 历史记录

备份文件位置:`%LOCALAPPDATA%\Packages\com.companyname.mauibrowser\LocalState\`

## 项目结构

```

MauiBrowser/

├── Models/ # 数据模型

│ ├── Tab.cs # 标签页模型

│ ├── Bookmark.cs # 书签模型

│ ├── HistoryItem.cs # 历史记录模型

│ └── WindowState.cs # 窗口状态模型

├── Services/ # 服务层

│ ├── ConfigManager.cs # 配置管理

│ ├── BookmarkManager.cs # 书签管理

│ ├── HistoryManager.cs # 历史记录管理

│ ├── BackupManager.cs # 备份管理

│ ├── AIManager.cs # AI功能管理

│ └── WebViewService.cs # WebView服务

├── Platforms/ # 平台特定代码

│ └── Windows/ # Windows平台实现

│ └── WebView2Configurator.cs

├── Controls/ # 自定义控件

├── Converters/ # 值转换器

├── Pages/ # 页面

│ ├── MainPage.xaml(.cs) # 主页面

│ ├── BookmarkManagerPage.xaml(.cs) # 书签管理页面

│ ├── HistoryPage.xaml(.cs) # 历史记录页面

│ └── AIConsolePage.xaml(.cs) # AI控制台页面

├── Resources/ # 资源文件

│ ├── AppIcon/ # 应用图标

│ ├── Images/ # 图片资源

│ └── Fonts/ # 字体文件

├── App.xaml(.cs) # 应用程序入口

└── AppShell.xaml(.cs) # 应用程序外壳

```

## 配置文件

### 窗口状态配置 (windowstate.json)

```json

{

“Left”: 100,

“Top”: 100,

“Width”: 1024,

“Height”: 768,

“IsFullScreen”: false

}

```

### 书签数据 (bookmarks.json)

```json

[

{

"Name": "网站名称",

"Url": "https://example.com",

"Group": "默认",

"CreatedAt": "2024-01-01T00:00:00"

}

]

```

## 开发指南

### 代码规范

- **命名规范**:PascalCase(类、方法)、camelCase(私有字段)

- **注释规范**:中文注释,说明关键逻辑

- **错误处理**:try-catch 包裹关键操作,Console.WriteLine 输出调试信息

### UI 设计规范

- **颜色方案**:Google Material Design 风格

- **字体大小**:12-18px

- **圆角设计**:8-16px

- **间距规范**:4-12px

### 构建和测试

1. **调试构建**

```bash

dotnet build

```

2. **运行测试**

```bash

dotnet run

```

3. **发布构建**

```bash

dotnet publish -c Release

```

## 已知问题

- 全屏模式需要进一步优化

- 部分网站图标可能无法正确显示

- 历史记录搜索功能待完善

## 未来规划

- [ ] 跨平台支持(macOS、Linux)

- [ ] 扩展插件系统

- [ ] 书签和历史记录云同步

- [ ] 隐私保护模式

- [ ] 广告拦截功能

- [ ] 深色模式

- [ ] 性能优化

## 版本历史

查看 [CHANGELOG.md](CHANGELOG.md) 了解详细的版本更新历史。

## 许可证

本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。

## 贡献指南

欢迎提交 Issue 和 Pull Request!

1. Fork 本仓库

2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)

3. 提交更改 (`git commit -m ‘Add some AmazingFeature’`)

4. 推送到分支 (`git push origin feature/AmazingFeature`)

5. 创建 Pull Request

## 联系方式

如有问题或建议,请提交 Issue。

## 致谢

- [.NET MAUI](.NET Multi-Platform App UI 文档 - .NET MAUI | Microsoft Learn)

- [WebView2](Microsoft Edge WebView2 简介 - Microsoft Edge Developer documentation | Microsoft Learn)

- [Material Design](https://material.io/design)

**注意**:本项目目前专注于 Windows 平台,其他平台的支持正在规划中。