# 使用 AI + OPFS 在浏览器中实现 MacOS Finder(文件管理器)

没忍住又搞了一个 OPFS 项目,我太喜欢(Web 太需要)这个文件 IO 能力了,对 OPFS “寄予厚望”!

preview img

项目链接:https://github.com/hughfenghen/opfs-finder (opens new window)
立即体验:https://fenghen.me/opfs-finder (opens new window)

# 简介

该项目基于 opfs-tools 实现,可作为复杂 Web 应用的文件管理器,或在浏览器中模拟操作系统;
项目 95% 的代码使用 AI 实现,并提供了关键 Prompts 文档,方便 AI 辅助编程初学者参考;
可将项目剩余的 TODO List 当做练习题,鼓励使用 AI 来实现。

# 项目总结

  • OPFS (opens new window) 是浏览器中的文件系统 API,高性能且无需用户授权
  • opfs-tools (opens new window) 是基于 OPFS 的开源项目,提供非常便捷、操作文件的 API
  • opfs-finder (opens new window) 模仿 Finder App,在浏览器中运行
  • 本项目的动机
    • 为了展现 OPFS 的能力,加速该技术的普及
    • 为了完善 opfs-tools 的 API
    • 为了学习、应用 AI 技术,辅助实现常见、无聊的功能,Prompts 文档
  • 鼓励感兴趣的同学使用 AI 实现 TODO List 并发起 PR
  • 该项目的用途
    • 成为未来复杂 Web 应用的文件管理器
    • 在浏览器中模拟操作系统(如:文档编辑器,图片查看器,纯 Web 的本地视频播放器)

# 作者碎碎念

我在开发 WebAV (opens new window) 项目(用于在浏览器中处理音视频)时,处理较大的音视频文件必须依赖文件系统,不能像常规的 Web App 把数据全部加载到内存中;
为了配合 WebAV 处理音视频,封装且顺便开源了 opfs-tools (opens new window) 项目,用于方便文件操作。

OPFS (opens new window) 相当于浏览器给每个网站开辟了一个私有的存储空间,Web 开发者借助这个 API 在私有空间中创建、读写文件,不需要用户授权且性能更好;
目前在各个浏览器中已得到较好的兼容性支持,详情可阅读Web 文件系统(OPFS 及工具)介绍 (opens new window)

我非常高兴 Web 能开放出非常接近操作系统的文件 API,预测 OPFS API 在未来会有很大的应用潜力;
打算实现一个能展现 OPFS 能力的“产品”来加速该技术的普及,同时借该项目来完善 opfs-tools 的 API。

偶然想到可以模仿每天使用的 Finder(MacOS 系统文件管理)APP,这样即使没有视觉设计师也能实现不错的视觉效果;
未来 Web 系统的 App 越来越复杂,越加深度依赖文件系统(OPFS),说不定该项目能成为第三方网站的文件管理器;
或实现打开/预览文本、音视频文件等功能,在浏览器中模拟真实的操作系统;
至于目前有什么用?谁知道、谁能想到你会在一个网页中放一些什么奇怪的文件呢[doge]?(该项目中的文件是由浏览器管理,用户文件系统中找不到,也不会上传)

最开始对于是否开启本项目还是有点犹豫的,因为本项目主要工作是去实现“比较无聊”的页面交互逻辑;
想着逐渐火热的 AI 辅助编程,正好需要试试它成色几何,结果是相当地惊艳,本项目 95% 的代码由 AI 实现
于是把项目启动阶段的重要提示语都放到了 Prompts 文档,可作为 AI 辅助编程初学者参考;
对本项目或者 AI 辅助编程感兴趣的同学,可将 TODO List 作为练习题,鼓励使用 AI 来实现功能,测试功能后发起 PR。

# 附录

💗 博主正处于裸辞待业状态,欢迎 商务合作 💗

相关文章

从 React 看前端 UI 代码范式革命

alt text 前言 本来打算写的主题是“我为什么讨厌 React Hooks API”,展开聊聊“小甜甜”是如何变成“牛夫人”的,没想到越写越严肃:) React 是两次前端范式革命的引领者,至今仍有繁荣的社区和旺盛的创造力; React 多次天才又激进的创新,一些想法被借鉴改良、一些引发广泛质疑,大部分是被认同和接受的; ...

WebCodecs 性能表现及优化思路

笔者开源 WebAV 已经一年半,还写了系列文章帮助初学者入门 Web 音视频。 之前一直隐隐担心在 Web 平台处理音视频与 Native APP 会有明显性能差距,因为 WebCodecs API 毕竟被浏览器代理了一层,且一些数据处理需要 js 配合,不确定有多大的性能损耗。 相信刚接触 WebCodecs 的读者也非常关心它的性能表现如何。 ...

Web 网页自集成 HTTP 代理方案

前言 大部分程序员,想必都有会一个常用的抓包代理工具; 但在座的各位,可曾见过这样一款集成在 Web 应用中的代理工具? 它是明显区别于传统代理工具的,有以下特性: 零安装,零配置,Web 点击即用、APP 扫码即用;_(不 ...

Web 文件系统(OPFS 及工具)介绍

文件系统是往往是构建大型软件的基石之一,很长一段时间 Web 平台因缺失成熟的文件系统成为构建大型软件的阻碍,如今 OPFS 可弥补这一缺憾。 本文介绍 OPFS 背景和基本使用方法、使用过程中的注意事项,及如何配合笔者开源的 opfs-tools、opfs-tools-explorer 两个项目,充分发挥 OPFS 的性能与开发效率。 Web 存储 A ...

opfs-tools (文件系统 API) 项目介绍

文件系统是许多领域程序的基石,所有通用编程语言都会内置完备的文件系统 API。 Web 很长一段时间没有提供完善的访问文件系统的规范,使得需要高频读写文件、大文件处理软件在 Web 端都会受到一些限制,比如音视频剪辑、游戏、数据库等等。 之前在浏览器中实现视频裁剪、截帧等相关功能时,发现缺少基本的操作文件的 API,比如读写、移动、复制文件。 而 [OPFS] ...

Web 终极拦截技巧(全是骚操作)

拦截的价值 > 计算机科学领域的任何问题都可以通过增加一个中间层来解决。 —— Butler Lampson 如果系统的控制权、代码完全被掌控,很容易添加中间层; 现实情况我们往往无法控制系统的所有环节,所以需要使用一些 “非常规”(拦截) 手段来增加中间层。 拦截的方法 拦截/覆写 浏览器 API 最常见的场景有通过拦截 console ...

Web 音视频(六)图像素材处理

Web 音视频目录 前序章节介绍了如何在浏览器中解析、创建视频,以及给视频添加一些自定义素材(图片、音频、文字...); 本章介绍如何给图像素材加特效、加动画,实现转场、移动水印、图像滤镜美化等功能。 你可以跳过原理介绍,直接查看 WebAV 示例 素材动画 在视频制作中实现动画跟其他场景略有不同,因为视频 ...

Web Audio & Video (7) Mid-Series Review

Web Audio & Video Series Table of Contents Personal Reflection Over the past month since this series began, we've covered the parsing, processing, and composition of ...