会议概要
仍然遵循第五周提出的目标:第五次会议
但是具体设计被修改,部分计划需要变更。由于其他因素,更改了中期目标。
进度与问题
前端
-
进度
正在进行Demo制作,已解决socket通信问题,目前尚未实际调用后端。
-
问题
对前端边界不明确。(会议中已结合设计思路明确)
后端
-
进度
正在进行Demo制作,目前尚未被前端调用。
-
问题
基于测试代码,过程未评估?(会议中暂不考虑具体实现细节,先实现给定功能为最高优先级)
文字
-
进度
正在进行文本编辑组件制作。
核心
-
进度
已完成部分抽象SVG接口;结合上一次会议改变了设计。
-
问题
部分设计不够明确(已在会议中明确)
中期目标改变(第八周)
-
前后端
由于其他因素,目前进展缓慢。重新划定目标,仍然为前后端Demo,其中应具有以下功能:
- 创建图形
- 画布缩放、移动
- 关键点的移动
- 图形的拖动
- 组件:直线、矩形、…(其他视情况)
- 撤销、重做
- 删除
- 保存图片
- (画布网格)
- (Markdown)
-
核心
完成大部分抽象SVG定义与实现,完成常用动态SVG定义,进行编译测试和功能测试。
-
文字
完成文本编辑器组件设计与实现。
设计改动
设计思路经历了大改,结合上周会议具体改动如下:
- 前端由Canvas渲染改为DOM渲染,且渲染细粒度化,变更为DOM对象与属性级别。(由实验性的渲染性能测试决定此次改动)
- 将组件逻辑彻底非流程化,摒弃原有的“关键点-路径点-SVG元素”思路,使得设计更自由。
- 明确了底层职责,并非定义通用的组件,而是定义一个框架,并作为前端的替身,然后逻辑进行适配;由后端实现组件逻辑。
- 考虑到许多操作需要完全借助前端进行(仅Web中含有的接口,需要使用前端上下文;重新实现太过于麻烦),因此前后端接口的重要性提升。
- 上述设计中,Javascript组件对象和C++组件对象具有等价性、抽象SVG对象与DOM的SVG对象具有等价性,使得前后端一体化。
- 关于为何不采用纯前端:① 提升性能:脚本时间大于绘制时间,因此主要逻辑使用静态编译有利于提速,且可利用编译优化 ② 规范性:采用面向对象思想将组件的框架规范化,明确过程且保留一定自由度 ③ 降低逻辑复杂性:将SVG抽象化,然后进行逻辑适配,使得SVG变为动态对象,减少其中的重复操作与逻辑复杂性
结合新设计的中后期目标(第九周到十二周)
有以下技术热点:
- 通信部分:如何实现Socket前后端的通信协议,即进程间相互调用
- 组件部分:核心完成框架;接着是后端对组件的实现;最后时前端定义隐藏部分细节的组件(可无限向后进行)
- SVG部分:前端的解释器、核心的动态SVG
- 文字部分:Latex及其他文字技术
前端
- 完成Socket协议前端部分(通信部分)
- 协同后端组件,实现对应的前端组件(组件部分)
- 协同核心中的SVG接口,实现对应的解释器(SVG部分)
- 其他(关于Markdown、Echart等和前端绑定的内容)
后端
- 完成Socket协议后端部分(通信部分)
- 实现后端组件具体逻辑(组件部分)
- 对SVG接口的转发(SVG部分)
- 其他(性能优化等)
核心
- 抽象SVG和动态SVG的完全实现(SVG部分)
- 框架设计、验证、调整(组件部分)
- 工作指导
- 其他(性能优化等)
文字
- Latex支持
- 其他支持