Spire.OfficeJS 由一套浏览器端编辑器资源(web)和若干可选的服务端组件组成。产品包里的 example(示例服务,默认 3000)和 service/OfficeServer(编辑器服务,默认 8000)并不是必须部署的:web 资源既可以由编辑器服务分发,也可以复制到自有前端项目中,随项目一起发布。
产品组成
| 组件 | 位置 | 职责 | 何时需要 |
|---|---|---|---|
| 前端资源 | web |
编辑器界面、WebAssembly 引擎、字体、第三方依赖 | 必需 |
| 编辑器服务 | service/OfficeServer |
资源分发、运行时接口、协同编辑、缓存、授权配置 | 开箱即用必需,自有前端集成按需 |
| 示例服务 | example |
演示用的文档管理系统和示例文档 | 仅试用和演示 |
| 字体生成工具 | generateWebFonts |
提供字体安装/生成组件,用于生成 web/fontsweb |
首次部署或复制资源前 |
产品包还提供 run_servers_* 和 run_genallfonts_* 两个部署脚本:前者用于一键启动示例服务(3000)和编辑器服务(8000),后者用于生成 web/fontsweb 网页字体资源。二者都是对产品组件的调用封装。
运行架构
无论采用哪种部署形态,浏览器中的编辑器结构都是一样的:

三条链路对应一次编辑过程的关键环节:
- 加载资源:业务页面加载
SpireCloudEditor.js,编辑器 iframe 根据入口脚本地址推断web资源根路径,再加载编辑器界面、WebAssembly 引擎和字体。 - 读取文档:浏览器通过
fileAttrs.sourceUrl读取业务存储中的文件。serverless 模式下文档内容通过editorAttrs.serverless.fileData传入。 - 保存文档:通过
fileAttrs.callbackUrl或editorAttrs.events.onSave将结果交给业务系统。需要协同时,编辑内容还会通过coAuthorUrl同步。
文件列表、权限和文件存储由业务系统负责,编辑器负责解析、渲染和编辑,资源由编辑器服务或静态站点托管,协同编辑由 coAuthorUrl 指向的编辑器服务提供。
部署形态
同一套 web 资源,有两种常见的托管方式。它们不是两个产品版本,而是同一套编辑器资源的不同部署位置:
| 开箱即用 | 嵌入自有前端 | |
|---|---|---|
| 启动方式 | 运行 run_servers_* |
运行/发布自己的前端项目 |
| 示例服务 3000 | 使用,提供示例文档系统 | 不使用 |
| 编辑器服务 8000 | 使用,提供资源和接口 | 通常不使用,需要协同等服务端能力时再部署 |
web 资源 |
由编辑器服务分发 | 复制到前端静态目录,随项目发布 |
| 文档来源 | 示例文档,或 sourceUrl |
serverless.fileData,或 sourceUrl |
| 保存方式 | 示例系统保存、callbackUrl |
events.onSave,或 callbackUrl |
| 适用场景 | 试用、验证、演示 | 正式集成到自有产品 |
开箱即用
运行产品包自带的启动脚本,会同时启动 3000 示例服务和 8000 编辑器服务。访问 http://localhost:3000 进入示例文档系统。请参考运行示例。
嵌入自有前端
这种方式由前端项目托管 web 资源。具体的目录结构、初始化配置和文件传入/保存方式,请参考 集成示例。文件存储、权限和文件列表仍由业务系统负责。
常见误区
- “3000 和 8000 都必须启动”:不对。它们只用于开箱即用的部署形态。嵌入自有前端时可以把
web资源放进项目静态目录,直接由前端项目发布。 - “纯前端就是不用部署任何服务”:不对。文档处理在浏览器内完成,但
web资源仍需要由静态服务器、Nginx 或 CDN 托管。 - “示例服务也要一起上线”:不需要。示例服务只用于试用和演示,生产环境可以停止。







