cad-viewer 评测:纯浏览器端的 DWG/DXF 查看与编辑,真的可行吗
该项目围绕「mlightcad/cad-viewer」构建,面向真实业务场景提供可复用的开源实践方案,支持稳定落地与可扩展的项目实践。
秒懂
- 它是什么?
- cad-viewer 宣称是首个完全在浏览器内运行的 DWG/DXF 查看与编辑器,无需后端。本文基于其 README 与仓库结构,分析其机制、上手方式、插件系统,并指出其适用边界与替代方案。
- 适合谁用?
- 如果你的工作流强调隐私、离线或轻量分享,cad-viewer 值得认真评估。适合需要将 DWG/DXF 嵌入网页、构建无后端 CAD 工具、或生成自包含 HTML 供外部协作的团队。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是什么问题
传统 CAD 查看器要么是桌面软件,要么依赖后端服务解析文件。cad-viewer 把 DWG/DXF 的解析、几何处理和渲染全部放进浏览器,文件不离开用户设备。这解决了两个痛点:一是云端应用无需搭建 CAD 后端,二是隐私敏感场景下图纸不会上传到第三方服务器。它的目标用户很明确,做网页集成、需要离线查看、或者对数据安全有硬性要求的工程团队。
核心机制:浏览器内的解析与渲染
根据 README,cad-viewer 在浏览器内完成 DWG/DXF 解析、几何处理和渲染,渲染基于 THREE.js。这意味着它不需要服务器把文件转换成中间格式,而是直接在前端处理原始 CAD 数据。架构上分为两个 npm 包,@mlightcad/cad-viewer 和 @mlightcad/cad-simple-viewer,后者是插件系统的基础。数据流大致是:文件被 fetch 到浏览器,解析器读取实体,几何数据交给 THREE.js 渲染。这个流程决定了它的性能瓶颈在前端,大文件会占用大量内存和 CPU。
上手:一条命令安装,一个 iframe 嵌入
安装需要 Node.js 24 和 pnpm 10。克隆仓库后执行 pnpm install,然后 pnpm dev 启动完整查看器,pnpm dev:simple 启动简化版。构建用 pnpm build。嵌入网页最简单的方式是 iframe,例如 src="https://mlightcad.com/embed.html?url=https://example.com/plans/floor.dwg&mode=review&toolbar=1"。这个 iframe 从你的 URL 获取文件,在访问者浏览器中解析,自带平移、缩放、测量、标注工具。对只想展示图纸的网站来说,这比自建解析服务省事得多。
插件系统:扩展的入口
插件系统集中在 @mlightcad/cad-simple-viewer 包中。插件实现 AcApPlugin 接口,通过 onLoad 和 onUnload 钩子接入查看器生命周期,典型用途是注册命令、添加 UI、或连接导入导出流程。这个设计让第三方可以定制功能,而不是 fork 整个项目。README 提到有团队基于它构建了生产级查看器,比如 Thingraph 的 DWG Viewer,以及社区做的 Nextcloud 集成。但插件生态的成熟度如何,文档没有给出具体示例代码,需要开发者自行探索。
导出自包含 HTML:一个被低估的功能
cad-viewer 支持一键导出为单个 HTML 文件。这个文件内嵌了图纸快照和轻量查看器运行时,收件人无需 CAD 软件、服务器或安装,在浏览器里就能打开、平移、缩放、切换图层、测量距离。README 特别强调,这个离线查看器打开同一图纸时比传统桌面工具占用内存少得多。这个功能的价值在于分发,你可以把图纸作为邮件附件或静态文件托管,对方点开就能看。对合规存档和隔离网络场景,这比要求对方安装软件现实得多。
限制与失败模式
cad-viewer 的软肋在于复杂编辑。README 列出的操作只有选择、缩放、平移、删除,没有提及修改属性、创建实体或图层管理,说明编辑能力是有限的。另一个风险是浏览器环境的性能天花板,大文件在低端设备上可能卡顿,60+ FPS 的宣称需要实际测试验证。此外,DWG 格式本身是闭源的,解析器的兼容性取决于对格式的逆向工程程度,某些版本或加密文件可能无法正确解析。最后,Node.js 24 的要求不低,如果团队还在用 LTS 版本,构建环境需要调整。
替代方案:桌面端与后端解析的取舍
传统桌面 CAD 查看器如 AutoCAD 或免费的 LibreCAD 提供了完整的编辑功能,但需要安装,且无法嵌入网页。另一类方案是后端解析服务,比如使用 ODA File Converter 或 Aspose.CAD 在服务器上转换 DWG 为 SVG 或 PDF,再传给前端显示。区别在于,后端方案能处理超大文件,因为计算资源在服务器,但需要维护服务,且文件会经过服务器,隐私性差。cad-viewer 的选择是牺牲部分功能和性能上限,换取零后端和隐私。如果你的需求只是查看和简单标注,这个取舍是合理的。
维护与许可证
项目使用 MIT 许可证,这对商业集成友好,没有 copyleft 义务。仓库处于活跃状态,最近一次提交是 2026 年 8 月,v1.6.3 刚发布。升级频率看起来是每周一个 patch,说明维护者投入持续。但升级成本需要关注,因为依赖 THREE.js 和解析器,版本更新可能引入 breaking change。README 没有提供迁移指南,也没有说明 API 稳定性,建议在采用前锁定版本并阅读 readthedocs 上的版本化文档。
编辑结论
如果你的工作流强调隐私、离线或轻量分享,cad-viewer 值得认真评估。适合需要将 DWG/DXF 嵌入网页、构建无后端 CAD 工具、或生成自包含 HTML 供外部协作的团队。不适合需要复杂编辑功能、依赖重型桌面插件生态、或对超大图纸渲染性能有苛刻要求的用户。采用前务必验证三件事:一是 Node.js 24 与 pnpm 10 的构建环境是否满足,二是目标浏览器对 WebGL 的支持,三是导出的 HTML 在真实网络环境中的内存占用。项目仍在活跃更新,但成熟度需自行通过 v1.6.3 的 API 文档和实际绘图测试确认。
社区笔记