V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
godleon
V2EX  ›  程序员

[讨论一个开源的想法] 针对 web 端,想做一个有交互的升级

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

    场景

    简单的来说就是实现 web 端可以做到类似 app 的在线升级,实现在线更新 web 项目;

    问题

    1.目前有没有类似的开源? 如果有就不准备做了,可以二开或者直接使用
    2.有没有实现的可能
    3.有没有意义,其实我单纯的出发点就是感觉比较酷炫,不用停止站点,做到在线更新,不更新可以继续使用老版本。
    4.纠结的点在 如果做出来会不会在部署的工作量上要远大于打包直接扔到现网环境;但是各有利弊吧

    PS

    只是一个想法的雏形,具体是否落实还需考察

    12 条回复    2023-06-15 10:43:52 +08:00
    AuYuHui
        1
    AuYuHui  
       318 天前
    没有意义
    retrocode
        2
    retrocode  
       318 天前
    localstorage 内存个 hash, 页面所有资源改为动态获取用 hash 取, hash 不变版本不升级.
    或者基于版本号部署路径, 用户需登录, 后自动跳转对应版本.

    不过我赞同楼上, 没有意义, 这属于自己给自己上难度.
    zongren
        3
    zongren  
       318 天前
    h5 应用商店?几年前挺火。
    llmice
        4
    llmice  
       318 天前
    web 端什么情况下要做到热更新?
    Rever4433
        5
    Rever4433  
       318 天前
    其实我觉得你可以做个伪页面,当 web 服务更新的时候,弹出一个"升级"的安装过程。但实际上只是等待新项目部署的一个遮罩。
    Finnn
        6
    Finnn  
       318 天前
    不知道之前不少技术文档网站有个更新检测吗, 有更新就提示你刷新, 然鹅实用性很差, 导致很多都不用了, 例子: Vue 系列官网(已经干掉好久了
    zgcwkj
        7
    zgcwkj  
       318 天前
    pwa?
    godleon
        8
    godleon  
    OP
       318 天前
    @Rever4433 这个想法可以的,比如最新版的 UI 可以先录个演示过程,然后放到升级等待窗口里搞个动画播放;
    LeegoYih
        9
    LeegoYih  
       318 天前
    灰度
    duke807
        10
    duke807  
       318 天前
    看下我这个加密工具,同时是一个 pwa 模板: https://github.com/dukelec/cde
    riceball
        11
    riceball  
       318 天前   ❤️ 1
    是 web 端么? 如果只是浏览器访问,那么必然就 PWA 了,关于 PWA 可以使用资源的预缓存机制,google 提供的 Workbox 工具箱简化使用.

    如果是跨平台的 JS 应用,那么要看你用的是啥了,react native? cordova? capacitor? flutter? 基本上都有热更新, 微软贡献的开源项目 code-push 不错

    1. https://github.com/microsoft/react-native-code-push
    2. https://github.com/microsoft/cordova-plugin-code-push
    3. https://github.com/mapiacompany/capacitor-codepush
    xiaotuzi
        12
    xiaotuzi  
       317 天前
    如果是 web 端,只要你访问一个页面,那么这个页面的所有内容将被浏览器缓存,那下一个页面就可能需要更新,更新的前提可能就是跳转链接。

    目前我服务器使用的前端需要 vue 打包,热更新的逻辑就是打包好文件(dist),然后将 dist 覆盖 produce 文件夹,这个过程很快,服务器一般转移覆盖文件也就几秒,如果文件不多的话。影响也是很小的。
    实际上,前台 web 入口页面也就只有一个,换了 index.html ,那就是新版本了。

    影响:一般需要重新加载 js image 这些静态资源,这里比较卡,比较慢。

    基本热更新是比较难实现的,除非有个动态资源请求检查更新,然后在当前页面写入新版本的资源加载。那么跳转下一个页面更新的时候,本地已经加载了这些资源,所以就可以解决这个加载资源慢的问题。

    综上,交互升级不是特别重要,只要闲事发版即可,但无论什么时候,都解决不了浏览器首次加载资源慢的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   884 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 20:23 · PVG 04:23 · LAX 13:23 · JFK 16:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.