# 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**
- 下载并安装 [.NET 9 SDK](下载 .NET 9.0 (Linux、macOS 和 Windows) | .NET)
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 平台,其他平台的支持正在规划中。