ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Univer 版本演进全景解读:从 0.1.0-beta 到 1.0.0-beta 的两年架构之旅

Univer 版本演进全景解读:从 0.1.0-beta 到 1.0.0-beta 的两年架构之旅 Univer 版本演进全景解读从 0.1.0-beta 到 1.0.0-beta 的两年架构之旅【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univerUniver 是一个覆盖电子表格Sheets、文档Docs与演示文稿Slides的全栈办公套件框架同时支持 Web 与服务端运行。本文以仓库根目录的 CHANGELOG.md 为绝对主线系统梳理 Univer 从 2024 年 2 月的0.1.0-beta到 2026 年 8 月的1.0.0-beta之间 30 多个版本的技术演进脉络架构如何从单体走向模块化再收敛回 1.0 的 Base 架构、公式引擎如何扩充到数千函数级规模、Docs 编辑器如何从纯文本成长出表格/页眉页脚/分页、暗色模式与 RTL 国际化何时落地以及版本背后的工程化工具链turbo、pnpm、vitest、playwright、verso。读完本文你可以把两年间的每次发版都映射到具体的功能与源码模块快速理解当前仓库的目录结构和能力版图。这份 Changelog 的形态与生成机制在深入版本内容之前先弄清楚这份 Changelog 是怎么生成的这决定了它的可靠性与检索价值。仓库根目录的 verso.toml 给出了完整答案[version] root_package package.json [workspaces] patterns [ common/*, packages/*, presets, presets/packages/*, ] include_root true [changelog] infile CHANGELOG.md preset angular [git] commit_message chore(release): release v${version} tag_name v${version} push follow-tags几个关键事实CHANGELOG.md 由 verso 工具自动生成。1.0.0-alpha.1版本中明确记录了migrate from release-it to verso构建链迁移此后版本发布由 package.json 中的release: verso脚本驱动提交信息遵循chore(release): release v${version}tag 采用v${version}。分类遵循 Angular Commit Message 约定。整份文档按Bug Fixes、Features、Performance Improvements、Other Changes (build / chore / ci / docs / refactor / test)、Reverts、BREAKING CHANGES分组每个条目带 PR 号与提交哈希可直接回溯。版本号管理以根 package.json 为准。当前仓库根package.json的 version 字段为1.0.0-beta.2说明发布管线已经过 beta.0 → beta.1 → beta.2 的迭代Changelog 头部可能略滞后于最新构建产物。workspace 覆盖common/*、packages/*、presets及其子包与仓库实际目录结构完全一致changelog 中出现的包名前缀如sheets-ui、engine-render、docs-drawing均可映射到 packages/ 下的同名目录。因此这是一份结构规整、条目可回溯、与源码目录一一对应的高质量变更记录非常适合作为技术文章的事实骨架。发布节奏与版本时间线从 CHANGELOG.md 中可以还原出清晰的发布节奏先看整体时间线所有日期均来自文档原文阶段版本区间时间主题关键词早期探索0.1.0-beta.5 ~ 0.1.172024-02 ~ 2024-06编辑器基础、公式函数扩充、permission 雏形、数据验证/条件格式起步功能扩展0.2.0 ~ 0.2.152024-07 ~ 2024-09Doc 表格、页眉页脚、uni mode、pivot、定义名称、action-recorderFacade 爆发0.3.0 ~ 0.5.02024-09 ~ 2024-11Facade API 全面铺开、公式函数大规模补充、render unit 系统现代化改造0.6.0 ~ 0.9.02025-02 ~ 2025-07skeleton 拆分、暗色模式、Vue3/Web Component 适配、表格table支持协作与协议0.10.0 ~ 0.25.02025-07 ~ 2026-05thread-comment、filter/table、公式依赖树、protocol 包、RTL、区域化货币1.0 收敛1.0.0-alpha.0 ~ 1.0.0-beta.02026-06 ~ 2026-08Base 架构 v1、presets 并入、SSC/Uniscript 移除、公式包合并、跨工作簿引用、Word 兼容分页几点观察基于文档事实早期0.1.x几乎每周一版功能增量密集典型如 0.1.12024-03-01到 0.1.172024-06-28的 17 个补丁版本主要打磨编辑器内核与公式函数。0.2.x 是能力爆发期Doc 编辑器表格、页眉页脚、uni mode、pivot 透视表、定义名称、超链接、评论thread-comment、数据绑定等大功能都在这一时期落地。0.5.0 之后节奏明显放缓2024-11 到 2025-02 出现约三个月空档随后 0.6.0 起每 1~2 周一次小版本进入稳定的周更节奏直至 1.0.0-alpha。1.0.0-alpha 系列2026-06-24 ~ 2026-07-29每周一个 alpha属于集中收尾期大量删除旧 API、合并重复包、清理历史债务为 beta 铺路。特别地1.0.0-alpha.5条目为No classifiable changes说明 alpha 发布管线也支持无变化也可发版的占位语义。架构主线从单体到模块化再到 1.0 的收敛Changelog 最能体现架构演进价值的部分是贯穿始终的重构类提交Other Changes (refactor)。梳理下来有一条非常清晰的脉络。早期功能即插即用模块按业务划分0.1.x ~ 0.2.x 时期仓库已经按功能域拆出sheets、docs、slides、engine-render、engine-formula、design、ui等包与今日 packages/ 目录的形态一致。功能以插件形式注册例如 0.1.4 起陆续出现的 conditional-formatting、data-validation、defined name、sort、filter、hyperlink、thread-comment 等都是独立的packages/*包。渲染层重构skeleton 拆分与 render unit 系统渲染架构有过两次关键调整0.6.0-alpha.0split skeleton into core and render-engine把原本耦合在表格里的 skeleton骨架计算拆到 core 与渲染引擎之间为后续多编辑器共享渲染基础设施打基础。0.8.0engine-render: add render unit system#2025引入渲染单元系统支持在单一 canvas 场景中挂载多个渲染单元0.6.0 同期还加入了ui: support switching render unit。这套机制是如今 examples 中sheets-multi-units多实例/多单元示例的基础可参考 examples/src/sheets-multi-units/。1.0.0-alphaBase 架构 v1 与债务清理1.0.0-alpha.02026-06-24是里程碑版本核心提交是base: version 1#6979。从后续 alpha 的 refactor 条目可以推断其内涵数据层抽象Base1.0.0-alpha.0 起逐步出现base hierarchy contracts#7391、Base date field config types#7374、Base attachment value type#7317、Base conditional coloring types#7407、RecordLink field configuration#7386等说明 1.0 将表格/文档共有的记录、层级、字段抽象为统一的 Base 数据模型base: remove deleted snapshot fields#7239则表明 Base 快照字段被同步清理。移除历史包袱remove SSC functionality#7267、#7264、harden custom code execution paths and remove Uniscript#7217、remove deprecated APIs#7358、remove obsolete value state#7356、remove deprecated changeDoc API#7349、remove getUniverSheetInstance#7343、remove deprecated getRenderById#7335——SSCServer-Side Calculation从remove SSC function与公式相关提交看它是一套旧的公式服务兼容层与 Uniscript脚本面板在 1.0 被整体移除自定义代码执行路径被加固。公式包合并consolidate formula packages into engine-formula#7321、merge formula plugin into engine#7322最终在 packages/engine-formula/ 下形成 1500 TS 文件的巨型引擎包。预设Preset体系落地merge univer-presets into univer#6703把原先独立的 presets 仓库并入主仓库成为根目录 presets/ 与 presets/packages/ 下的若干univerjs/preset-*包。以 presets/packages/preset-sheets-core/src/preset.ts 为例UniverSheetsCorePreset(config)会把 Network、Docs、RenderEngine、UI、Sheets、Numfmt、Formula 等插件按依赖顺序组装成一个IPreset用户只需createUniver({ presets: [UniverSheetsCorePreset()] })即可启动一套完整的表格应用见 presets/packages/preset-sheets-core/README.md。工程化release-it → verso0.15.1之前由 release-it 驱动发布1.0.0-alpha.1完成migrate from release-it to verso后verso.toml 成为发布唯一入口配合pnpm run release一键发版。构建与测试统一由 turbo 编排根 package.json 中build、test、typecheck、coverage均为turbo命令test:e2e走 playwright.config.ts单元测试走 vitest.workspace.ts 聚合各包 vitest 配置。样式体系从 Less 全面迁移到 TailwindCSS如 0.7.0-beta.1numfmt: refactor less to tailwindcss、0.8.0-beta.0 多个refactor less to tailwindcss因此每个 UI 包都带有tailwind.config.ts与postcss.config.mjs。电子表格Sheets核心能力演进Sheets 是 Univer 最成熟的产品线changelog 中与其相关的条目占绝对多数。按能力域梳理如下。公式引擎从补函数到依赖图公式引擎的演进可分为三个阶段函数扩充期0.1.x ~ 0.5.x几乎每个版本都有formula: add some xxx functions覆盖数学、文本、日期、统计、查找、财务、工程、逻辑、信息类函数0.2.7 起补充leftb/mid/rank/rank.avg/rank.eq0.4.0-alpha.0 加入regexextract/regexmatch/regexreplace正则族0.5.0 加入ARRAY_CONSTRAIN/FLATTEN/ISBETWEEN/MARGINOFERROR等数组与统计函数0.5.3 支持register async function0.4.2 的bycol/byrow/map/reduce/scan标志着函数式数组能力落地。引擎深化期0.10.x ~ 0.25.x0.10.0 增加cell inverted index cache倒排索引缓存以加速大范围查找0.12.0 支持table formula结构化表格引用并修复数组公式溢出缓存0.12.1 支持AGGREGATE与IMAGE公式0.13.0 引入formula dependency api与dependency tree and calculation api公式从逐格重算升级为依赖图驱动0.23.0 推出formula engine dependency系列重构。1.0 收敛期1.0.0-alpha 系列engine-formula: support cross-workbook references#7292打通跨工作簿引用host external reference contract#7338定义宿主外部引用契约同时sheet: improve Excel formula and rendering compatibility1.0.0-beta.0把兼容性目标明确指向 Excel。公式包的合并使 packages/engine-formula/ 成为当前仓库最大的单一源码包1530 个 TS 文件。数据验证Data Validation数据验证是 sheets 中迭代最持久的功能之一0.1.4 ~ 0.1.8起步support data validation、validator 状态查询、DataValidationListCacheService缓存。0.4.x ~ 0.6.x完善any-validator and allowBlank选项、下拉搜索框、错误样式errorStyleSTOP、日期验证支持时间、getValidatorStatusAsyncAPI。0.8.x ~ 0.12.x聚焦性能与细节修复极端大范围 OOM、列表值逗号保留、跨工作表引用、checkbox 复制状态、粘贴时联动公式计算。UI 侧同步演进最终形成 packages/sheets-data-validation-ui/ 与核心包 packages/sheets-data-validation/ 分离的格局。条件格式Conditional Formatting0.1.5引入条件格式基础0.1.16 ~ 0.1.17修复数据条渲染、iconSet 缺失区域化等问题。0.2.x ~ 0.4.x持续修复跨工作表复制粘贴、排名计算、stopIfTrue 逻辑、隐藏行影响等。1.0.0-alpha起被纳入 Base 抽象Base conditional coloring types#7407并与record identity、hierarchy contracts等 Base 概念对齐。筛选、排序与表格Filter / Sort / Table筛选0.1.8 引入sheets: filter随后持续修复跨工作表回滚、日期分组、按颜色筛选、导入 Excel 隐藏行、filter range 随行/列删除联动等问题0.10.0 增加sheets-filter sync switch配置。排序0.1.16 引入 sort 功能与自定义排序面板0.2.x 修复自定义排序列索引错误。表格Table / 超级表0.7.0-beta.0 的table support#4831与sheets-table系列包是里程碑随后补齐表筛选行按工作表隔离、表格名称唯一性校验不能与定义名称重复、跨工作表公式引用、filter panel 布局等1.0.0-alpha.4 修复表公式 resolver 在测试床的注册问题。绘图、图片与图表Drawing / Image / Chart0.1.13起sheets and docs drawing统一绘图模型0.1.14 支持 drawing print0.2.x 起图片支持外部粘贴、缩放旋转、单元格内图片cell image。0.5.x ~ 0.7.xdrawing 分组/排列/对齐右键菜单、shape 文本编辑、drawing group facade api。1.0.0-alphasheets-drawing: complete anchor placement API#7379、transform drawings with sheet structure#7312、drawing object list metadata#7195并把图片 IO API 收敛到 core。定义名称Defined Name从 0.1.4sheet: defined name起步到 0.2.x 支持名称框输入与公式引用再到 0.13.0 的formula bar defined name input focus、set defined name in formula bar0.22.0 增加 defined name 权限控制器0.23.0 优化 lexer.treeBuilder 性能形成完整闭环。实现可参考 packages/sheets/ 下的相关命令与 examples 中的 facade 示例。数字格式Numfmt0.1.2 ~ 0.1.4 支持 enUS、percent、自定义格式0.2.x 增加货币快捷键国际化、区域本地化。0.6.x ~ 0.8.x 期间numfmt模型重构#1945并与 sheets 解耦为独立包 packages/sheets-numfmt/。0.10.0 起支持区域感知的货币格式region-aware currency formats1.0.0-beta.0 修复空格式结果保留问题。剪贴板、冻结、合并单元格与自动填充剪贴板跨版本持续强化包括 HTML 转义0.22.0、Excel 复制文本解析0.10.x、合并单元格边框粘贴0.15.1、富文本换行保留0.6.1、不支持的 Clipboard API 环境的内部粘贴菜单0.15.1。冻结0.15.0 优化冻结菜单、0.2.x 修复插入行列后冻结更新0.10.11 引入freezeSync配置控制实时协作中冻结状态是否同步给其他用户。合并单元格贯穿多个版本修复边框、撤销、复制粘贴、隐藏行列、自动行高联动等问题。自动填充autofill0.2.11 起修复扩展规则、日期规则、跨冻结线滚动复位、填充时选择状态等0.12.3 提供 facade 自动填充 API。文档编辑器Docs演进Docs 编辑器是 changelog 中仅次于 Sheets 的第二大主题其成长轨迹非常清晰起步0.1.x文本编辑、富文本内联格式、段落样式、列表bullet/ordered、光标与 IME、查找替换0.1.3、Zen 编辑器。表格与绘图0.2.xdoc support table0.2.7、表格跨页断行、表格单元格内列表、文档内图片布局0.1.10、drawing 统一支持。页眉页脚与分页0.2.0 → 1.0.00.2.0 引入 header/footer并声明默认值为 true 的 BREAKING CHANGE0.4.2 支持现代模式modern mode无边距连续流式排版与传统分页模式切换1.0.0-alpha.8 实现Word-compatible pagination#7334文档排版向 Word 对齐。交互增强0.6.x ~ 0.9.x段落菜单、浮动工具栏FloatToolbar、标题菜单heading-menu、快速插入菜单quick-insert支持表格与图片、checklist、doc hover 服务、目录/侧边菜单。1.0 时代agent-friendly text range lookup#7329与agent-friendly facade APIs#7243——文档明确面向 Agent/LLM 场景提供友好的文本范围查询与门面 APIsupport inline formula custom ranges#7360、rich text columns#7262、column group document flow1.0.0-alpha.1。对应源码可参阅 packages/docs/、packages/docs-ui/、packages/docs-drawing/ 等包。演示文稿Slides演进Slides 起步较晚且节奏克制0.2.5 ~ 0.2.7支持文本编辑、形状与图片编辑、元素更新操作、工具栏/侧边栏。0.8.2 ~ 0.10.x修复导入错误、getRenderUnitByPageId参数问题。1.0.0-alpha改用model-authoritative slide rendering#7378即以数据模型为权威进行渲染为后续协作奠定基础。对应 packages/slides/ 与 packages/slides-ui/。Facade API让一切可编程Facade门面API 是 Univer 面向开发者与 Agent 的主要编程接口changelog 中facade:前缀条目超过百条0.1.9 ~ 0.1.17workbook/worksheet 基础操作、onBeforeCommandExecute、set font API。0.5.x 爆发make facade api sync and chainable0.5.3、FRange.getValues、merge facade、find-replace facade、formula facade、ui facade、f-enum事件枚举、clipboard hooks。0.6.x ~ 0.10.x数据验证、条件格式、筛选、排序、权限、hyperlink、comment、drawing、image、URL、shortcut、menu 等 facade 全面补齐0.10.13 增加manual initialization support与isCellEditing。1.0 时代agent-friendly系列 API、text range lookup、section facade、element facade、document element facade#7156、image facade#7278。核心实现分布在各包的facade/子目录与 packages/core/src/facade/预设包通过import univerjs/sheets/facade等副作用导入聚合见 presets/packages/preset-sheets-core/src/preset.ts。UI 组件库与主题系统packages/design/ 是 Univer 自研的 UI 组件库changelog 记录了组件的持续补全DatePicker/DateRangePicker、Slider、ColorPicker含 RGBA、hex、HSV、DropdownMenu、Checkbox/RadioGroup、Tree、KBD、Segmented、Textarea、InputNumber、ButtonGroup、Gallery、HoverCard、Accordion、Badge、MultipleSelect、Panel、Calendar含年月快捷选择等。主题系统方面0.7.0引入暗色模式support dark mode与darkMode配置、ThemeService 暗色支持。1.0.0-alpha.8增加 yellow 主题1.0.0-alpha.0 增加 orange、purple 主题。对应 packages/themes/ 下的主题包与 examples/src/theme-customizer/ 主题定制示例。国际化、RTL 与本地化语言覆盖文档明确记录了 zh-CN、en-US、ru-RU0.1.11、fr-FR0.5.1、ja-JP0.12.0、ko-KR0.8.3、es-ES 与 ca-ES0.9.3、sk-SK0.15.4、vi-VN0.2.3、zh-TW0.2.31.0.0-alpha.1 又统一重构了多语言 locale 键。RTL 支持0.23.0 为 UI 增加 RTL 方向支持add RTL direction support for UI随后 0.10.x 系列集中修复画布 LTR 回退、日历 RTL、numfmt 方向等0.4.0-alpha.0 曾支持 farsi波斯语i18n。区域化细节0.10.2 起货币格式随语言包切换region-aware currency formats数字格式化跟随 locale。平台兼容性React、Vue、Web Component、移动端与运行环境从 changelog 的Other Changes (chore)、bugfix条目可以还原出完整的兼容矩阵React仓库提供 scripts/react-version-manager.mts 在 React 16 / 19 之间切换package.json 的use:react16/use:react19脚本历史上针对 React 160.2.3、React 18 严格模式0.1.11、0.6.5、React 191.0.0-alpha.8upgrade React and consolidate tests都有专门修复。Vue3 与 Web Component0.9.0 支持通过适配器注册 Vue3 / Web Component 构建的 UI 组件packages/ui-adapter-vue3/、packages/ui-adapter-web-component/0.8.0-beta.0 增加 webcomponent 演示1.0.0-alpha.2 泛化为generic component framework adapters。移动端0.1.17 初始化基础移动能力0.2.0 补滚动与选择0.18.0 增加移动端 Ribbon 与上下文菜单0.25.0 修复冻结区滚动残影、向上滚动页面跳动等问题examples 中有 examples/src/sheets-mobile/ 独立示例。运行环境SSR 支持0.1.4、Node.js 环境下的 facade 操作0.21.1 修复FRange.setValue的document is not defined、0.8.3 修复 opentype 深导入的 Node ESM 兼容、Electron 中禁用 queryLocalFonts0.10.2、Chrome 88 兼容1.0.0-beta.0、Safari 18 画布缓存修复1.0.0-alpha.8。仓库 docs/ISOMORPHIC.md 是服务端同构运行的专门文档。协同、权限与实时编辑权限系统permission0.1.13 引入后持续迭代0.4.2 将初始权限默认值改为 false更安全的默认值0.22.0 增加 defined name 权限控制器0.25.0 增加 workbook/worksheet 权限点与checkWorksheetPermissionPoint/checkWorkbookPermissionPoint1.0.0-alpha 时期把权限数据从 owner permission inherit marker0.20.1演进到 Base 模型。实现集中在 packages/sheets/src/ 下的 permission 目录与 docs/tldr/permission.tldr 架构图。评论与批注thread-comment / note0.1.12 起 sheets 评论支持0.2.x 增加文档评论数据源0.9.x 优化编辑流程批注note独立成 packages/sheets-note/。实时协作基础设施share cursor、协同光标、undo/redo 历史、snapshot 变换迁入 core0.1.3、before-close事件、文档changeDocAPI 的移除与重构以及 0.21.0 新增的 packages/protocol/ 协议包定义跨端消息契约如UpdateCollaborator。性能与质量changelog 里的隐性工程账Performance Improvements分组勾勒了性能优化的完整版图渲染viewport 缓存0.1.13move cache to viewport、单元格渲染与自动行高优化0.8.0-beta.1、合并单元格大数量渲染优化0.16.0、增量滚动渲染0.16.0、合并感知的增量滚动1.0.0-beta.0、emoji 选择器虚拟化1.0.0-beta.0。公式依赖维护0.1.8、倒排索引缓存0.10.0~0.12.0 多轮、增量更新1.0.0-alpha.4、内存泄漏修复0.12.0、大范围 COUNTIFS 内存溢出0.17.0。内存治理文档中反复出现memory leak修复仓库还有专门的 docs/FIX_MEMORY_LEAK.md 与 e2e 内存用例 e2e/memory/memory.spec.ts、disposing 用例 e2e/disposing/。质量体系vitest 单测、Playwright e2ee2e/ 下含 smoking、perf、ref-range、visual-comparison 等目录、coverage 分片脚本 scripts/coverage-shard.mts。升级视角值得关注的 BREAKING CHANGES文档明确标注的破坏性变更虽少但重要升级到 1.0 时需注意布尔值存储0.1.4TRUE/FALSE从字符串改为数字1/0存储对应sheets: boolean should store as number。页眉页脚默认值0.1.12header与footer默认值改为true。1.0.0-alpha 系列的 API 清理changeDocAPI、getUniverSheetInstance、getRenderById、SSC、Uniscript、getUniverSheetInstance等被移除自定义代码执行路径被加固——如果你在旧版本上深度使用这些 API需要按 docs/API_STABILITY.md 的稳定性约定评估迁移。公式包合并公式相关功能统一从engine-formula导出包入口发生变化。如何在当前仓库验证与跟进核对版本根 package.json 的 version 与 CHANGELOG.md 头部对照确认当前处于 1.0.0-beta 系列。阅读骨架docs/NAMING_CONVENTION.md 解释了包命名约定docs/API_STABILITY.md 定义了 API 稳定性承诺docs/ISOMORPHIC.md 说明服务端同构约束。快速上手按 presets/packages/preset-sheets-core/README.md 安装univerjs/preset-sheets-core用createUniver({ presets: [UniverSheetsCorePreset()] })启动presets/src/index.ts 展示了 preset 入口聚合 core 与 themes。跑起来看仓库提供pnpm devexamples 演示、pnpm testturbo 聚合单测、pnpm test:e2ePlaywright、pnpm build等脚本见 package.jsonexamples 目录 examples/src/sheets/、examples/src/sheets-multi/ 等覆盖了 changelog 中提到的多实例、多单元、移动端、WebComponent 等几乎所有场景。结语把 CHANGELOG.md 从头读到尾Univer 两年多的技术路线图就清晰了从 0.1.x 的跑通编辑器与公式到 0.2.x~0.5.x 的功能铺满三大编辑器 Facade 可编程化再到 0.6.x~0.25.x 的暗色模式、国际化 RTL、协议与协作、性能治理最后在 1.0.0 系列完成 Base 数据架构收敛与历史债务清理。这份 changelog 本身就是最好的源码导航每条变更都能在 packages/、common/、presets/、examples/ 中找到对应的实现与示例。对想要深入 Univer 源码、评估升级路线或研究办公套件工程化实践的开发者来说它是无可替代的入口。【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表