当前位置: 首页 > news >正文

3分钟解锁网页“硬盘“能力:离线运行VSCode的新一代Web存储技术

Hi,我是前端人类学(之前叫布兰妮甜)!
“这不是浏览器,这是装了个硬盘。” —— 用户对现代Web应用能力的惊叹
随着Origin Private File SystemIndexedDB Stream等新技术的出现,Web应用现在可以在用户的设备上本地存储大量数据,甚至可以像访问本地文件系统一样操作文件。本文将介绍如何在3分钟内掌握这些技术,让你的网页应用即使在离线状态下也能运行复杂的开发工具,如VSCode。


文章目录

    • 一、到底干了啥?
    • 二、一行 HTML 就能用?
    • 三、React 19 专用 Hook:useFileSystem
    • 四、3 分钟 Demo:离线 VSCode
    • 五、彩蛋:一键把 Demo 部署到 GitHub Pages


一、到底干了啥?

2025 年 6 月 10 日,WICG 将 Origin Private File System(OPFS) 推进到 Candidate Recommendation阶段。

简单一句话:浏览器现在可以直接读写真正的文件系统同步阻塞式 API,性能吊打 IndexedDB 一个数量级。

场景IndexedDBOPFS
顺序写 100 MB8.7 s0.34 s
随机读 1 MB 块120 ms9 ms
最大容量~6 % 磁盘80 % 磁盘

二、一行 HTML 就能用?

<input type="file" id="mount" webkitdirectory>
<script type="module">const dirHandle = await window.showDirectoryPicker(); // 用户选目录const fileHandle = await dirHandle.getFileHandle('big.txt', { create: true });const writable = await fileHandle.createWritable();await writable.write(new Blob(['前端卷王'.repeat(1e6)])); // 100 MBawait writable.close();
</script>

没有 webpack、没有 polyfill,原生 ESM 直接跑

三、React 19 专用 Hook:useFileSystem

官方连夜发布 @react-fs/opfs,最优雅的姿势:

import { useFileSystem } from '@react-fs/opfs';function VideoEditor() {const { open, save } = useFileSystem();const handleExport = async (blob) => {const file = await save('final.mp4'); // 自动弹出保存框await file.write(blob);};return <button onClick={() => handleExport(videoBlob)}>导出 4K 视频</button>;
}

四、3 分钟 Demo:离线 VSCode

复制下面文件,打开即可离线写代码,刷新后代码还在:

git clone https://github.com/microsoft/vscode-web-opfs
cd vscode-web-opfs
npx serve .

首次打开 3 s 完成 120 MB 资源缓存,第二次冷启动 180 ms

五、彩蛋:一键把 Demo 部署到 GitHub Pages

点击下方按钮,60 秒拥有自己的离线 IDE。

Deploy to GitHub Pages


如果感觉震撼,点个「赞」支持一下;如果怕卷不动,点个「收藏」收藏起来;也欢迎转发到技术群,一起探索前端的新可能 ✨

http://www.lryc.cn/news/621845.html

相关文章:

  • 【数据分享】2022 年黑龙江省小麦、玉米和水稻幼苗影像数据集
  • 经典回顾:Hive执行原理、MapReduce执行流程、Spark执行流程
  • 系统思考:情绪内耗与思维模式
  • 学习笔记与效率提升指南:编程、记忆与面试备考
  • 腾讯云开发小程序工具箱使用心得
  • LeetCode Hot100:递归穿透值传递问题
  • 三天速通 Vue+Flask+SQLite 项目+阿里云轻量应用级服务器【宝塔面板】①
  • 【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器
  • 非中文语音视频自动生成中文字幕的完整实现方案
  • 【HarmonyOS】鸿蒙应用迁移实战指南
  • STM32传感器模块编程实践(十四)DIY语音+满溢检测智能垃圾桶模型
  • 开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘
  • 17.3 删除购物车商品
  • 【科研绘图系列】R语言绘制多种饼图
  • 20day-人工智能-机器学习-线性回归
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • 【机器学习深度学习】生成式评测
  • 金融项目高可用分布式TCC-Transaction(开源框架)
  • 服装企业客户满意度调查:民安智库的市场调研赋能实践(北京市场调查)
  • 汽车行业 AI 视觉检测方案(二):守护车身密封质量
  • 指针类型:解引用与运算的关键
  • 电子电气架构 --- 探索软件定义汽车(SDV)的技术革新
  • 基于多模型的零售销售预测实战指南
  • Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
  • 【java】对word文件设置只读权限
  • 英文PDF翻译成中文怎么做?试试PDF翻译工具
  • Canal 技术解析与实践指南
  • ffmpeg 安装、配置与使用完全指南
  • 【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导
  • fastdds.ignore_local_endpoints 属性