文件预览 SDK 太重了?用 Open File Viewer 的 lite 轻量入口给打包体积瘦身
前端音视频【免费下载链接】open-file-viewerA framework-agnostic embedded file viewer for vanilla JavaScript, React, Vue and Svelte. Put PDF, Office, images, media, archives, email, drawings, 3D, GIS and engineering files inside one stable container.项目地址https://gitcode.com/gh_mirrors/op/open-file-viewer点击查看免费下载Open File Viewer 是一个开源的文件预览 SDK能把 PDF、Office、图片、音视频、压缩包、邮件、图纸、3D 和 GIS 文件放进同一个容器里预览支持原生 JavaScript、React、Vue 和 Svelte。如果你的项目只需要图片和 PDF 预览它专门提供了一个open-file-viewer/core/lite轻量入口——用它替换完整入口就能给打包体积做一次明显的瘦身。 为什么文件预览 SDK 会变重Open File Viewer 的设计思路是插件化每种文件格式由一个独立插件负责。完整入口 packages/core/src/index.ts 会导出全部能力——类别插件图片、视频、音频imagePlugin、videoPlugin、audioPlugin文本/代码、PDF、电子书textPlugin、pdfPlugin、epubPlugin、xpsPluginOffice、OFD、压缩包、邮件officePlugin、ofdPlugin、archivePlugin、emailPlugin图纸、思维导图、CAD、3D、GISdrawingPlugin、xmindPlugin、cadPlugin、model3dPlugin、gisPlugin兜底fallbackPlugin而核心包的依赖树也随之变得丰满packages/core/package.json 中声明了three、leaflet、xlsx、mammoth、mermaid、jszip等一批较重的库。问题来了一个只预览合同 PDF 和图片的业务页面为什么要为 CAD 引擎、3D 模型和 GIS 地图支付体积成本这些代码会跟着首屏一起下载却可能永远用不上。 lite 轻量入口里到底有什么lite是一个独立的构建产物源码在 packages/core/src/lite.ts它只导出 5 样东西导出作用createViewer创建预览器工具栏、主题、多文件队列等能力全部保留isPreviewSupported挂载前判断文件是否有可用预览路径imagePlugin图片预览jpg、png、webp、svg、tiff、heic 等pdfPluginPDF 预览含搜索、页码跳转、加密提示fallbackPlugin不支持的格式显示下载兜底页预览器的容器、工具栏、loading/error 状态、响应式尺寸等运行时能力一点没少少掉的只是你不需要的格式插件。样式文件open-file-viewer/core/style.css在两个入口间共用见 packages/core/package.json 的exports定义。 两个入口怎么选速查表判断维度用lite用完整入口需要预览的格式图片 PDF含 Office、压缩包、邮件、CAD、3D、GIS 等依赖树只带 PDF 运行时带入全部插件及其解析依赖典型场景合同/发票/图片附件预览文档协作平台、工程图纸系统一句话原则按需取用不要全都要。官方文档中也有同样的建议可参考 README.zh-CN.md 中Angular CLI 20 图片与 PDF 轻量入口一节。⚡ 三步切换到 lite 入口给打包瘦身第 1 步确认依赖没变pnpm add open-file-viewer/core pnpm add pdfjs-distlite 和完整入口都装在同一个包里不需要额外安装。第 2 步把 import 路径从core改成core/liteimport { createViewer, fallbackPlugin, imagePlugin, pdfPlugin } from open-file-viewer/core/lite; import open-file-viewer/core/style.css; const viewer createViewer({ container: #viewer, file: fileOrUrl, fileName: contract.pdf, width: 100%, height: 70vh, theme: auto, plugins: [imagePlugin(), pdfPlugin(), fallbackPlugin()] });用法和完整入口完全一致只是插件列表更短。第 3 步检查构建产物运行一次vite build并查看 chunk 报告。对 Vite 用户尤其值得这么做Vite 的依赖预构建optimizeDeps会遍历你入口能静态到达的整个依赖图——只要入口引用了完整coreOffice 转换链路上的依赖就可能被预构建和打进包里。改走lite后优化器根本不会进入那条依赖链这是官方专门说明过的场景packages/core/README.md。⚠️一条硬规则同一个应用内不要混用core和core/lite两个入口保持唯一来源即可见 packages/core/README.md。 官方如何保证 lite 真的轻这不是口头承诺仓库里有自动化测试把关构建产物断言packages/core/src/optional-peer-build.test.ts 用 esbuild 把lite.ts打进内存 bundle 后检查依赖清单中必须包含image.ts、pdf.ts且不得出现office.ts、emf-converter等 Office 链路依赖。lite 入口一旦被污染测试直接失败。PDF 引擎按需加载packages/core/src/plugins/pdf.ts 中pdfjs-dist采用动态import()只有第一个 PDF 真正开始渲染时才会拉取 PDF 引擎进一步把体积成本推迟到使用时。 什么时候该回到完整入口当业务出现这些需求时切回open-file-viewer/coreOffice 文档docx、xlsx、pptx甚至旧版ppt/wpsofficePlugin压缩包与邮件zip、eml、msgarchivePlugin、emailPlugin工程图纸dxf、dwg、step、gdscadPlugin3D 与 GISgltf、obj、geojson、shpmodel3dPlugin、gisPlugin完整格式覆盖矩阵见 README.zh-CN.md 的格式覆盖表格。切换后同样建议用isPreviewSupported在挂载前做能力探测它对 lite 和完整入口都可用。✅ 打包瘦身检查清单业务只涉及图片和 PDF → 入口已改为open-file-viewer/core/lite全项目只有一个 core 入口来源没有混用style.css只 import 一次构建报告里确认 Office/CAD/GIS 相关依赖不再出现pdfjs-dist已安装PDF 预览必需小结Open File Viewer 的lite入口是预览器能力不减、格式插件按需的瘦身方案——图片 PDF 的场景用它重格式交给完整入口。想深入了解插件体系可以看核心包文档 packages/core/README.md 和快速开始示例 examples/vanilla/src/main.ts。赞分享前端音视频【免费下载链接】open-file-viewerA framework-agnostic embedded file viewer for vanilla JavaScript, React, Vue and Svelte. Put PDF, Office, images, media, archives, email, drawings, 3D, GIS and engineering files inside one stable container.项目地址https://gitcode.com/gh_mirrors/op/open-file-viewer点击查看免费下载相关推荐网页文件预览为何一直没有标准方案Open File Viewer 多格式文件预览 SDK 完整指南网页文件预览为何一直没有标准方案Open File Viewer 多格式文件预览 SDK 完整指南 Open File Viewer 是一个面向现代 Web前端音视频Open File Viewer 路线图解读从 1.0 到 3.0一个文件预览 SDK 的演进路线Open File Viewer 路线图解读从 1.0 到 3.0一个文件预览 SDK 的演进路线 Open File Viewer 是一个框架无关的文件预前端音视频Svelte 也能轻松预览文件Open File Viewer Svelte 适配器快速上手教程Svelte 也能轻松预览文件Open File Viewer Svelte 适配器快速上手教程 Open File Viewer 是一款框架无关的嵌入式文件前端音视频创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

微信支付V2 Java对接实战:统一下单、回调验签与退款避坑指南

微信支付V2 Java对接实战:统一下单、回调验签与退款避坑指南

简介:微信支付V2 Java服务端示例代码包,面向有Java基础的支付接入者,聚焦商家与开发者对接微信官方支付接口的核心流程,覆盖统一下单、生成预付单、支付结果回调、订单查询与退款等常见环节。代码包共23个文件:17个Jav…

2026/10/11 22:45:30 阅读更多 →
6GB显存跑35B代码模型:MTP加速与分层卸载实战指南

6GB显存跑35B代码模型:MTP加速与分层卸载实战指南

1. 为什么6GB显存能跑35B参数模型?先破除三个常见误解很多人看到“Tiel-Coder-35B-A3B”这个名称,第一反应是:35B参数?那至少得24GB显存起步,6GB连模型权重都加载不进去——这想法很合理,但恰恰踩进了当前多…

2026/10/11 22:44:30 阅读更多 →
Django会议室预订系统:冲突检测、并发锁与时区处理实战

Django会议室预订系统:冲突检测、并发锁与时区处理实战

简介:这是一套基于Django框架开发的会议室预订系统完整源码,面向Python Web初学者与中小型团队开发者,解决企业内部会议室资源调度混乱、时间冲突频发、人工管理低效等实际问题。项目采用标准Django MVC结构,含73个文件&#xff0…

2026/10/11 22:44:30 阅读更多 →

最新新闻

Q-learning改进版全解析:目标网络、经验回放与Double Q实战

Q-learning改进版全解析:目标网络、经验回放与Double Q实战

简介:这份资源是基于Q-learning改进的强化学习算法实现,开发工具为MATLAB,面向路径规划与人工智能学习者,适合机器人导航、网格寻路、游戏AI等场景下的最优策略求解问题。ZIP压缩包共包含21个文件,以19个.m脚本为核心&…

2026/10/11 23:37:44 阅读更多 →
eladmin代码生成器深度解析:从元数据读取到自定义模板实践

eladmin代码生成器深度解析:从元数据读取到自定义模板实践

eladmin这套后台管理框架,最吸引我的是那个看起来不起眼的代码生成器。很多人把它当黑盒用——在界面上点几下,下载一个 zip,解压、拷贝,前后端代码就齐了。但一旦你想改改生成出来的代码风格,或者想给模板加点自己的东…

2026/10/11 23:37:44 阅读更多 →
二叉树对比面试题100道:概念、遍历与数据结构选型

二叉树对比面试题100道:概念、遍历与数据结构选型

我最近在系统刷算法面试题,发现一个特别明显的现象:二叉树这道菜,几乎每家都在考,但很少直接甩一句“请你求一下二叉树深度”,更多是“递归求深度和层序遍历求深度有什么区别”“堆和二叉搜索树都是二叉树,…

2026/10/11 23:37:44 阅读更多 →
GitHub日榜项目怎么选?从热榜机制到本地AI推理工具评估实战

GitHub日榜项目怎么选?从热榜机制到本地AI推理工具评估实战

1. 日榜项目到底在选什么:从热榜机制说起很多人第一次接触 GitHub 热榜,会以为它是一个"按 star 总数排序"的榜单,其实不是。日榜的核心逻辑是增量,也就是过去 24 小时内新增 star 的速度。一个总 star 数只有几百的新项…

2026/10/11 23:37:43 阅读更多 →
ScreenToGif使用指南:免费开源录屏工具,一站式制作GIF动图

ScreenToGif使用指南:免费开源录屏工具,一站式制作GIF动图

做自媒体、写技术文档、提bug、做教程的朋友,几乎都逃不过一个需求:把屏幕上的一段操作录成 GIF。截图不够直观,录视频又太整,动图恰好卡在中间,既能在文档里内嵌,又能在聊天窗口直接播放。我用过不少工具&…

2026/10/11 23:37:43 阅读更多 →
表格大模型的回溯思考引擎:让预测可追溯、可干预、可审计

表格大模型的回溯思考引擎:让预测可追溯、可干预、可审计

1. 项目概述:这不是又一个“微调大模型”的故事,而是给结构化数据装上“回溯思考引擎”你有没有遇到过这样的场景:某公司用一个训练好的表格大模型预测客户流失概率,结果模型给出0.87的高分预警,但业务负责人盯着屏幕发…

2026/10/11 23:36:42 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →