V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tcper
V2EX  ›  前端开发

前端新把戏太多了

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

    虽然也经常关注新技术发展,不过读了 notion 的文章,发现还是有很多新东西

    他们用 sqlite wasm 存储数据,据说能提升性能,然后用到了

    • OPFS 这是浏览器对用户隔离的文件系统,理论上浏览器上可以跑一个 mysql ,用 OPFS 写入 bin 文件

    • Web Locks 浏览器的资源锁,他们说用这个判断 tab 是否关闭

    • Comlink 谷歌的一个用于 web worker 数据交互的库,看起来比较好用

    这些东西大家用过没?

    33 条回复    2024-07-18 21:13:07 +08:00
    daysv
        1
    daysv  
       128 天前
    indexedDB 够用了,本地客户端用原生 sqlite
    bojackhorseman
        2
    bojackhorseman  
       128 天前
    求文章链接
    tcper
        4
    tcper  
    OP
       128 天前
    @daysv 其实我也没懂他们为啥要用 sqlite wasm ,我记得 indexeddb 也是用 sqlite 实现的,可能 sqlite wasm 提供的 api 更多一点
    nomagick
        5
    nomagick  
       128 天前
    脱裤放屁,怎不在浏览器里运行 windows xp 然后在在 xp 里面运行 winform 呢

    有这功夫直接搞个客户端不行么,钱烧的简直是
    bojackhorseman
        6
    bojackhorseman  
       128 天前
    @nomagick 有没有可能人家已经在客户端上做好了,这里说的是在浏览器上的优化。
    Dididadada
        7
    Dididadada  
       128 天前
    Comlink 用过,做 webgl 的时候尝试用 offscreencanvas 提升性能,不过本质还是 worker 吧,comlink 就是方便点
    wu67
        8
    wu67  
       128 天前
    浏览器数据库用 indexedb.
    sqlite 是存服务器上的.
    其他不知道.
    murmur
        9
    murmur  
       128 天前   ❤️ 1
    一个笔记而已,再不折腾就到头了,现在都走 AI 了,也就是说开始革笔记的命了,如果 AI 什么都知道什么都会写我为什么要记笔记
    nomagick
        10
    nomagick  
       128 天前
    @bojackhorseman 这实在没法叫优化,浏览器上完 sqlite 目的是为了提升性能,就算能提升又能提升多少,还不如坐等明年英特尔出新 CPU ,坐等用户换电脑
    浏览器里面有了 sqlite ,过两天程序一更新,怎么还来运行 migration 吗,版本多了又怎办,版本多了我的电脑两个月没用,两个月之前的结构你现在还能提供正确的 migration 吗
    我浏览器哪天突然崩溃了 sqlite 数据坏了,这又怎么破,每次启动还来修复一下吗

    根本就是一种顾前不顾后的行为,简直抓马
    niubilewodev
        11
    niubilewodev  
       128 天前
    @nomagick 数据是在服务器上的,浏览器端的 sqlite 应该只是为了缓存,加快渲染速度。
    有问题重新同步数据就好了。
    2020diyige
        12
    2020diyige  
       128 天前
    前端就是有点走火入魔,路走偏了,,越复杂越难搞懂越好,,门槛越高
    Leviathann
        13
    Leviathann  
       128 天前
    browser is the new system
    retrocode
        14
    retrocode  
       128 天前
    评论区氛围很奇怪啊, 怎么平常说后端性能优化的时候各个站台这必要那必要的, 到了前端就开始脱裤子放屁没必要了,各个都这么有钱的 all in server 吗
    kdwnil
        15
    kdwnil  
       128 天前 via Android
    新的发展方向是不断试错试出来的,网页前端搞一大堆花里胡哨的玩意就是希望总能有一个能试对。

    用不上不用即可,,这些又不属于必须要有的玩意
    C4D4zRNpq9vFSlJW
        16
    C4D4zRNpq9vFSlJW  
       128 天前
    抱歉 我看错标题了 我反思
    qq316107934
        17
    qq316107934  
       128 天前
    感谢分享 前端确实有点像个小 OS 了,能做的事情特别多
    paopjian
        18
    paopjian  
       128 天前
    improved page navigation times by 20 percent in all modern browsers
    这么一顿折腾提高了 20%的效率,也不知道他们这优化细节是什么,感觉是像是提前缓存所有数据再拿出来
    LuckyLauncher
        19
    LuckyLauncher  
       128 天前
    indexeddb 在使用事务时会拖慢速度,这里有篇介绍文章
    https://rxdb.info/slow-indexeddb.html


    用 sqlite wasm 可能会加快速度,但是收益能不能超过数据序列化带来的性能问题还不好说
    然后用 OPFS 去持久化数据库,这我就不太理解了,这一步性能会比较差,原因跟上面文章提到的差不多,浏览器需要进行一系列的安全检查才会写入文件
    Comlink 就是封装了一系列方法帮助你序列化传输数据
    LuckyLauncher
        20
    LuckyLauncher  
       128 天前
    看了下文章
    Web Locks 他们主要是用来实现单例 sqllite ,也就是不管用户打开了多少个 notion 标签,只会有一个 wasm 的 sqlite 跑在用户的电脑上,其他标签页如果需要进行 sql 操作通过 sharedWork 代理实现,这个思路还挺巧妙的
    DOLLOR
        21
    DOLLOR  
       128 天前
    @nomagick
    winform 倒不至于,但 https://vscode.dev/就很有意思了,浏览器里直接跑个 vscode ,随便一台平板都能写代码了。
    wetyq
        22
    wetyq  
       128 天前
    这就是我的新 Mac 续航越来越差的原因?
    murmur
        23
    murmur  
       128 天前
    @retrocode 这可是笔记,云服务,不 all in server 你本地存一堆不上传服务器丢了或者同步不及时出分叉了算谁的啊
    tcper
        24
    tcper  
    OP
       128 天前
    @LuckyLauncher 持久化的时候慢也没关系,不影响体验
    tcper
        25
    tcper  
    OP
       128 天前
    @LuckyLauncher 他们自己发现并发写入文件会出现错乱才解决的,而且用的也不是 sharedworker ,而是 share 一个 worker
    LuckyLauncher
        26
    LuckyLauncher  
       128 天前
    @tcper #25 问题是普通 worker 怎么在不同的 tab 之间 share ?这是浏览器的限制
    tcper
        27
    tcper  
    OP
       128 天前
    @LuckyLauncher 他们说 sharedworker 有问题,改用 share 一个 worker ,应该是 worker 结合 sharedworker 实现的
    LuckyLauncher
        28
    LuckyLauncher  
       128 天前
    @tcper 在现阶段的浏览器中要在不同的 tab 中共享 worker 只有 sharedworker 能做到,所以你这里的不是 sharedworker 而是改用 share 一个 worker 本身就有歧义
    他们最后还做了总结
    The fact that neither variant could be used out of the box is what prompted us to build the SharedWorker architecture described above, which is compatible with either of these SQLite variants.
    也提到了 SharedWorker 架构而不是 shared a worker 架构
    okcdz
        29
    okcdz  
       128 天前
    OPFS 不同浏览支持器好像都有点问题。Notion 用这个比较激进,我感觉不如 IndexedDB
    pinecone1
        30
    pinecone1  
       128 天前
    前端最主要的问题就是能搞得花活儿特别多,然而真正对业务有用的特别少。
    除非是那种废墟重建,首屏加载时间从 10 秒变成 2 秒,不然一个加载三四秒的页面优化个 30%首屏时间对业务指标基本屁用没用。
    Knights
        31
    Knights  
       127 天前
    感觉就是用户不想装 APP ,那就把 APP 搬到浏览器上
    wildman9527
        32
    wildman9527  
       127 天前   ❤️ 1
    看成 "前戏太多" 进来的...
    chuck1in
        33
    chuck1in  
       127 天前
    没用 notion ,一直用的一个普通笔记 app
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.