- 全局状态命名: 使用
window.[page]State格式
- Markdown:
window.editorState
- Landing:
window.appState
- Excalidraw:
window.appState
- 状态验证: 每次使用前验证状态存在性
- 错误处理: 所有状态访问都应有错误处理
- Request格式:
{
"requestId": "item_id",
"action": "action_name",
"data": {...}
}
- Response格式:
{
"requestId": "item_id",
"result": {...}
}
- 原则: 严格使用item_id作为request_id,不生成随机ID
- 防御式编程: 所有接口调用都应有try-catch
- 优雅降级: 提供后备方案
- 用户提示: 重要错误应有用户可见提示
- excalidraw 的前端部分在 frontend/excalidraw路径下开发,开发完成后通过 deploy.sh 部署到 app/editor/plugins/excalidraw/ 路径下
- 参数命名: 服务器端统一使用
item_id 作为标识符
- 状态管理: 前端统一使用
itemId 标记全局唯一性
- 消息格式: 交互协议统一包含
item_id 作为参数之一表示要修改的内容关联的 id
// 标准消息格式
{
requestId: "123", // 使用item_id作为request_id
action: "setItemId",
data: { item_id: "item-id-123" }
}
// 标准状态管理
window.appState = {
itemId: "123", // 统一使用itemId
backend: backendInterface
};
// 标准API暴露
window.getContent = () => {
// 实现逻辑
};
window.setItemId = (itemId) => {
// 实现逻辑
};
window.getItemId = () => {
// 实现逻辑
}
window.setContent = (content) => {
// 实现逻辑
}
window.reset = () => {
// 实现逻辑
}
- 异常捕获: 所有槽函数都应有异常处理
- 日志记录: 详细记录通信日志
- 超时处理: 实现请求超时机制
- 线程安全: 确保Qt线程安全
- 资源清理: 正确清理WebChannel资源
- 内存管理: 避免内存泄漏
- 通信测试: 测试基本消息发送接收
- 边界测试: 测试空数据、大数据
- 错误测试: 测试各种错误情况
- 端到端测试: 完整流程测试
- 跨平台测试: 不同操作系统测试
- 性能测试: 大量数据测试
- 日志系统: 详细的通信日志
- 调试页面: 提供调试接口
- 监控工具: 实时监控通信状态
# 虚拟环境
source .venv/bin/activate
- 检查浏览器报错和 python 报错日志
- 检查错误: 查看浏览器和Python日志
- 延迟加载非关键资源
- 并行初始化多个组件
- 缓存静态资源
- 代码变更时同步更新
- 重大重构时全面更新
- 定期审查准确性