V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
xiaoming1992
V2EX  ›  JavaScript

js 有没有类似于“虚拟文件系统”的库?

  •  
  •   xiaoming1992 · 216 天前 · 2180 次点击
    这是一个创建于 216 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似于

    class File {
      // ...
    }
    
    class Dir {
      // ...
    }
    
    // 用法类似于
    const root = new Dir(xxx)
    root.add(xxx)
    
    const file = new File(xxx)
    file.content = 'xxx'
    

    且实现上( api 能力)尽量类似真实的文件系统(但不是 fs 那种,因为并不存在真实的文件)


    对了,最好是浏览器环境

    13 条回复    2024-09-11 13:13:01 +08:00
    lisxour
        1
    lisxour  
       216 天前   ❤️ 1
    有见过支持 node 的,但是你想要支持浏览器是什么应用场景,你怎么持久化保存呢?
    xiaoyiyu
        2
    xiaoyiyu  
       216 天前   ❤️ 1
    xiaoming1992
        3
    xiaoming1992  
    OP
       216 天前 via Android
    @xiaoyiyu 不持久化,我只是上次看到有通过类似 shell 的形式访问 reddit 的,我就想做一个 v2sh
    accelerator1
        4
    accelerator1  
       216 天前
    xiaoming1992
        5
    xiaoming1992  
    OP
       216 天前 via Android
    @accelerator1 这个不是 fs 形式的,可能用起来不方便。

    谢谢大家,#2 的 memfs 就很合适了。我的分不多了,账号被降权,提个问贵得要死,回复不起了。。。
    xiaoyiyu
        6
    xiaoyiyu  
       216 天前
    @xiaoming1992 memfs readme 底部有与他相似的库推荐,也可以按照对应的关键字查找
    zhy0216
        8
    zhy0216  
       216 天前 via Android
    tsc 里面有 好像是独立的库
    ChefIsAwesome
        9
    ChefIsAwesome  
       216 天前
    DOM 节点就是这么一棵树。访问上下左右,增删改查的方法都有。
    flyqie
        10
    flyqie  
       216 天前 via Android
    @ChefIsAwesome #9

    你的意思是想让楼主去基于 dom 树模拟?

    略微有点复杂了,纯 js 就可以。
    money1991
        11
    money1991  
       216 天前
    webassembly 啊,自带文件系统,完全兼容 unix
    ccbikai
        12
    ccbikai  
       216 天前
    ajan
        13
    ajan  
       106 天前
    浏览器端的

    https://stuk.github.io/jszip/

    ```javascript
    var zip = new JSZip();
    zip.file("Hello.txt", "Hello World\n");
    var img = zip.folder("images");
    img.file("smile.gif", imgData, { base64: true });
    zip.generateAsync({type:"blob"}).then(function(content) {
    // see FileSaver.js
    saveAs(content, "example.zip");
    });
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2680 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.