PWA 把 WEB 技术带回移动端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fox0001
V2EX    分享发现

PWA 把 WEB 技术带回移动端

  •  
  •   fox0001 2017-12-15 10:12:19 +08:00 10347 次点击
    这是一个创建于 2859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PWA 基于 web 开发技术,有本地 app 的体验,并 Google 努力争取成为标准。对于网站 app 的开发来说,是个极大的福音

    给中国开发者的 2017Google 开发者会议纪要(有 PWA 的简介) https://zhuanlan.zhihu.com/p/32025213

    别人的介绍:下一代 Web 应用模型 Progressive Web App https://huangxuan.me/2017/02/09/nextgen-web-pwa/

    成功案例如下。用 android 的 chrome 打开,可以添加到本地,使用效果跟本地 app 一样 1 )速卖通 https://m.aliexpress.com

    2 )微博 https://m.weibo.cn/beta

    3 ) twitter。其中 twitter 已经把 PWA 打包为 apk,放在 google play,体积不到 500k https://mobile.twitter.com

    40 条回复    2018-03-06 15:13:27 +08:00
    aaronlam
        1
    aaronlam  
       2017-12-15 10:23:08 +08:00
    怎么感觉这东西是全局版的小程序
    czmecho
        2
    czmecho  
       2017-12-15 10:24:23 +08:00
    Google maps go 版本就是 PWA 打包的,我的天!
    @aaronlam 明明是小程序学了 PWA
    aaronlam
        3
    aaronlam  
       2017-12-15 10:28:31 +08:00
    @czmecho 如果这个标准能统一感觉 WEB APP 能逆一波天
    czmecho
        4
    czmecho  
       2017-12-15 10:33:23 +08:00
    @aaronlam #3 反正有微信小程序在,在国内还是很难推广开来的。
    不过多家浏览器开发商已经在跟进了,如 UC。
    像微信内置浏览器就是一个市场份额很高的浏览器,它要是为了自己的小程序,不支持 PWA,那就更难了。
    overflowHidden
        5
    overflowHidden  
       2017-12-15 11:22:52 +08:00
    不知道能不能取代 hybrid app
    fe619742721
        6
    fe619742721  
       2017-12-15 11:24:20 +08:00
    之前看过介绍,感觉是个很好的方向,如果国内手机浏览器厂商能够统一推送能力的话,就更给力了。
    使用了 2 天微博 PWA,体验很不错
    miniyao
        7
    miniyao  
       2017-12-15 11:27:41 +08:00
    超过 10M 体积的原生应用,就没法替代了。再怎么样没有人能接受第一次加载 PWA 应用要等 10M 大小的内容缓存完吧,不过绝大多数的应用都可以控制在 1M 以内的初始加载吧
    fox0001
        8
    fox0001  
    OP
       2017-12-15 11:36:09 +08:00
    @fe619742721 #6 发现微博 PWA 不能把图片下载或分享
    nondanee
        9
    nondanee  
       2017-12-15 11:36:17 +08:00 via Android
    @miniyao 完全可以 fetch 相应资源时再缓存,不一定要 install 时就缓存全部啊
    fox0001
        10
    fox0001  
    OP
       2017-12-15 11:59:44 +08:00
    @miniyao #7 不知道可不可以实现延迟缓存。一般大的文件都是多媒体文件(图片、音频、视频之类),缓存时只缓存基本的 HTML、css 和 js,第一次加载时才缓存多媒体文件
    crysislinux
        11
    crysislinux  
       2017-12-15 12:14:49 +08:00 via Android
    Safari 肯定要搞事。
    miniyao
        12
    miniyao  
       2017-12-15 12:22:50 +08:00
    @nondanee
    @fox0001
    嗯,应该是可以异步缓存。

    Twitter 的 PWA 应用使用人数已经超过了原生应用。-- 这个数据有点让人吃惊
    millson
        13
    millson  
       2017-12-15 12:37:01 +08:00 via iPhone
    前几年就有这个概念了,不相信国内的流氓 app 们会去做,就算做也会是阉割版的
    fox0001
        14
    fox0001  
    OP
       2017-12-15 12:44:43 +08:00
    @crysislinux #11 就剩下他们了
    honeycomb
        15
    honeycomb  
       2017-12-15 12:49:32 +08:00 via Android
    @fox0001 但是苹果有底气做到不在 ios 支持 pwa,就像 safari 一直不支持 vp9,webm/微信小程序不太可能向 pwa 让步那样
    SuperMild
        16
    SuperMild  
       2017-12-15 12:50:10 +08:00
    网络世界越开放对 Google 越有利?微信、苹果等是靠封闭的生态圈盈利的,Google 是靠……其实真不知道 Google 是靠什么盈利的……
    sslyxhz
        17
    sslyxhz  
       2017-12-15 12:53:05 +08:00 via Android
    @SuperMild 上次看到有数据说谷歌八成收入靠广告
    GreatMartial
        18
    GreatMartial  
       2017-12-15 12:53:45 +08:00 via Android
    支持一下,真的很好用
    sorra
        19
    sorra  
       2017-12-15 12:55:22 +08:00
    微信小程序基础不牢,定不是 PWA 的对手
    Rice
        20
    Rice  
       2017-12-15 12:57:28 +08:00 via Android
    最大的问题是苹果支不支持
    fox0001
        21
    fox0001  
    OP
       2017-12-15 13:29:56 +08:00
    @honeycomb #15 其实 PWA 解决了手机 Web 端和 Android 端,一次过现实两个解决方案,已经很给力了
    kisnows
        22
    kisnows  
       2017-12-15 17:44:11 +08:00
    @fox0001 #10 可以通过 indexDB 缓存媒体文件。
    kmahyyg
        23
    kmahyyg  
       2017-12-15 17:48:07 +08:00 via Android
    PWA 目前两个问题,国内大部分不推广不应用。另外一个,大家都懂,Chrome
    cairnechen
        24
    cairnechen  
       2017-12-15 18:18:18 +08:00
    @miniyao PWA 使用人数超过原生应用 source?
    Sivan
        25
    Sivan  
       2017-12-15 18:32:18 +08:00
    想法是好的,但是苹果不想支持的话推广还是会有些阻力。
    miniyao
        26
    miniyao  
       2017-12-15 18:38:49 +08:00
    @cairnechen

    zhuanlan 点 zhihu 点 com/p/32025213

    2017Google 开发者会议纪要

    PWA
    Progressive Web Apps 简称 PWA,是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案。
    著名的社交平台 Twitter Android 移动端就用了这种技术,它的体积非常小,只有 0.2M ,非常轻量级。用这种技术构建网页应用,运行非常流畅,可以和原生的 APP 达到一样的效果。Twitter 的 PWA 应用使用人数已经超过了原生应用。
    mrqyoung
        27
    mrqyoung  
       2017-12-15 18:40:46 +08:00 via Android
    iOS 当然支持啊,Google 文档里面就有怎么支持并且怎么创建桌面快捷方式。去年自己玩了一下感觉挺不错的。pwa 是几年前的概念了
    cairnechen
        28
    cairnechen  
       2017-12-15 18:56:30 +08:00
    @miniyao 感谢,我回头看一下视频

    @mrqyoung 求个地址,我只找到这个
    https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=zh-cn

    看起来并没有接近原生应用体验,用 safari 添加到主屏幕也只是打开浏览器再打开网页而已
    jonsun30
        29
    jonsun30  
       2017-12-15 19:03:36 +08:00 via iPhone
    @cairnechen Safari 没有完全支持 pwa
    cairnechen
        30
    cairnechen  
       2017-12-15 19:10:13 +08:00
    @jonsun30 iOS Chrome 直接没找到添加到主屏幕的选项(还是我小白了?)
    jonsun30
        31
    jonsun30  
       2017-12-15 19:35:59 +08:00 via iPhone
    @cairnechen ios chrome 内核还不如 Safari,我没在用不知道
    zhujiulin
        32
    zhujiulin  
       2017-12-15 22:41:58 +08:00
    这玩意 chrome 好久以前就有了吧
    crysislinux
        33
    crysislinux  
       2017-12-16 00:23:28 +08:00 via Android
    Safari 不支持,不过 pwa 的东西在不支持的平台上就当普通网页跑
    lsido
        34
    lsido  
       2017-12-16 10:52:04 +08:00 via iPhone
    Safari 已经搞事了
    mrqyoung
        35
    mrqyoung  
       2017-12-16 11:37:16 +08:00   1
    @cairnechen 没错就是你发的链接中的 tutor #7 里面有说明。https://codelabs.developers.google.com/codelabs/your-first-pwapp/#7

    在 iOS 上用 safari 打开 pwa 页面后,添加到主屏幕,下次通过桌面图标打开就直接像 app 一样而不是 safari 的界面,除非页面出错(例如 https 证书问题)。

    可以直接使用 google 的例子来测试,safari 打开: https://weather-pwa-sample.firebaseapp.com/final/index.html 再添加到主屏幕





    cairnechen
        36
    cairnechen  
       2017-12-16 12:12:32 +08:00
    @mrqyoung google 的例子测试成功了,mobile.twitter.com m.weibo.cn/beta 均失败
    mrqyoung
        37
    mrqyoung  
       2017-12-16 13:08:20 +08:00
    @cairnechen 你是对的,在 iOS 上有一些限制。

    https://stackoverflow.com/a/41194974

    > As you can see, almost everything is working, even if your page can't work offline on iOS/Safari, there are still a huge benefit of "upgrading" your web app into a PWA.
    cairnechen
        38
    cairnechen  
       2017-12-16 13:22:48 +08:00
    @mrqyoung 比较好奇 google 的例子为啥能完美运行,看 twitter 的 blog 很早就开始做 PWA 了,如果 google 能做到,没道理以 twitter 的技术实力做不到
    KuroNekoFan
        39
    KuroNekoFan  
       2017-12-16 15:21:45 +08:00 via iPhone
    试了下只有 firebase 那个是达到了预期的效果
    chztv
        40
    chztv  
       2018-03-06 15:13:27 +08:00
    iOS11.3 已经支持 PWA 了,twitter \豆瓣\微博都 OK
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5864 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 06:27 PVG 14:27 LAX 23:27 JFK 02:27
    Do have fait in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86