跳转到内容

开发者文档

jpFun 把一份简谱源码分几步处理:先解析语法,再确定音乐时间,然后计算页面布局,最后绘制。播放与布局共用时间事件,但各自独立工作。

这组文档面向集成 jpFun 或修改其实现的开发者,介绍各阶段如何衔接,以及新增功能时可以使用哪些接口。

第一次读源码,可以先看架构总览,再沿着解析、Lowering、布局、渲染的顺序往下读。如果已经有具体任务,直接从对应专题入手即可:

你要做的事对应文档
修改语法、参数解析或语法糖源码解析
新增时间事件、作用域修饰或并行声部Lowering
调整间距、对齐、附属对象或分页简谱布局
输出 SVG、绘制 Canvas 或接入新后端渲染后端
实现演奏效果、反复或播放时间映射播放
接入高亮、补全、诊断或源码定位编辑器集成

先区分要改的是某个记号的规则,还是多个记号共用的机制。具体记号的语法、时间和绘制行为通常都在对应函数中;引擎负责调用这些规则、组织全局流程。

还有两个贯穿各阶段的约定:解析后的 AST 只读,本轮编译状态放在本轮中间对象里;布局和播放彼此独立,不读取对方的结果。修改时沿着这个分工找实现,再用相邻测试确认行为,通常就不需要改动整条流水线。