开发指南

了解如何参与绮梦DNS的开发

1. 项目结构

绮梦DNS项目采用清晰的模块化结构,便于开发和维护:

dns-server/
├── dns/                # DNS核心功能实现
│   ├── server.go       # 绮梦DNS主逻辑
│   ├── handler.go      # DNS请求处理
│   └── shield.go       # 屏蔽规则管理
├── http/               # HTTP API和Web控制台
│   ├── server.go       # HTTP服务器主逻辑
│   ├── api.go          # API端点实现
│   └── websocket.go    # WebSocket支持
├── static/             # 静态资源
│   ├── index.html      # Web控制台首页
│   ├── css/            # 样式文件
│   ├── js/             # JavaScript文件
│   └── website/        # 官方网站文件
├── go.mod              # Go模块定义
├── go.sum              # 依赖校验和
├── main.go             # 项目入口
└── README.md           # 项目说明文档

2. 开发环境

安装依赖

确保您已安装以下软件:

  • Go 1.18+:编程语言
  • Git:版本控制
  • Node.js (可选):用于前端资源构建

克隆项目

git clone https://github.com/example/dns-server.git
cd dns-server

安装Go依赖

go mod download

3. 构建项目

编译项目

使用以下命令编译项目:

go build -o dns-server .

运行开发服务器

使用以下命令直接运行项目,无需编译:

go run main.go

4. 测试

运行单元测试

使用以下命令运行单元测试:

go test ./...

测试覆盖率

生成测试覆盖率报告:

go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out

5. 贡献代码

贡献流程

我们欢迎社区贡献!请按照以下流程提交您的代码:

  1. 1
    Fork 项目仓库到您的GitHub账户
  2. 2
    Clone 您的fork到本地开发环境
  3. 3
    Create 一个新的分支用于您的功能或修复
  4. 4
    Develop 您的功能或修复,确保代码通过测试
  5. 5
    Commit 您的更改,使用清晰的提交信息
  6. 6
    Push 您的分支到GitHub
  7. 7
    Create 一个Pull Request到主仓库

报告问题

如果您发现bug或有功能建议,请在GitHub Issues中报告:

提交Issue

6. 代码规范

Go代码规范

我们遵循Go官方的代码规范,使用以下工具确保代码质量:

  • gofmt:格式化Go代码
  • go vet:检查代码中的常见错误
  • golint:检查代码风格

前端代码规范

前端代码遵循以下规范:

  • 使用ES6+语法
  • 使用Tailwind CSS进行样式开发
  • 保持代码简洁和可维护性
  • 添加必要的注释