热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈一下我了解的PWA

ProgressiveWebApps,简称PWA,中文翻译过来就是渐进式网页应用,个人觉得它可以算是Web应用的下一个进化方向之一,毕竟技

Progressive Web Apps,简称PWA,中文翻译过来就是渐进式网页应用,个人觉得它可以算是Web应用的下一个进化方向之一, 毕竟技术的发展有时候是不可预估的,谁也无法预料技术的走向,但至少它代表了一种可能性,下面我们就一起来了解下这种新兴技术。

以下仅代表个人见解和认知,有结合其他大神的文章的分析,如有不足之处欢迎指正!


 一、什么是Progressive Web Apps? 

Progressive Web Apps,简称PWA,中文直译过来就是渐进式Web应用,一个合格的PWA,应该具有但不限于以下特点:

 渐进式:针对不同版本不同内核的浏览器,它的功能能够渐进式的增强,随着用户与应用之间的联系加深,如果用户需要,网页可以渐进式地变成App,比如被添加到主屏幕、全屏方式运行、离线工作、推送通知消息等。但它仍是 Web 而非放到 App Store 里。

响应式:适应多种运行环境,无论是移动端、web端还是平板电脑等等。

对网络环境的弱依赖: 得益于谷歌的service worker技术,使PWA极大降低对网络环境的依赖,能够在离线或者网络极差的环境下工作。

持续更新:同样由于service worker的存在,应用能够轻松实现持续更新。

类原生体验:有像原生应用般的交互和导航给用户原生应用般的体验,如果用户愿意,特闷可以选择将PWA应用添加到手机主屏幕,同样得益于service worker,它甚至可以让PWA应用像原生应用一样接收消息推送。

安全:通过 HTTPS 来提供服务来防止网络窥探,保证内容不被篡改。


二、我个人对PWA的一些认知

以上对PWA的一些定义,都是一些官方的定义或者一些大神的认知,下面来谈谈我个人对PWA的一些认知,以及它和目前的Hybrid App、小程序、快应用的区别。

目前市场上主流的Hybrid App无非两种做法:

1.类似React Native这种,通过Javascript语言进行开发,视觉上通过标签转义,将RN标签转化为手机原生图形界面;操作上通过js调用手机底层硬件和SDK;这种做法的优点是APP体验好,缺点是开发周期几乎和原生APP差不多

2.国内外很多中小企业比较青睐的H5页面套APP外壳的做法,例如国内的APICloud、H5plus等等,其本质上只是一个可以访问特定H5页面的浏览器;这种做法的优点是开发周期短,缺点是体验和性能都较差。

而小程序和快应用,个人认为更多的是借鉴React Native的思路进行实现的,尤其是微信小程序,基本上就是沿用了RN的那一套。

那么PWA和以上几种应用的区别在哪里呢?有些人可能会觉得PWA和小程序以及快应用几乎没什么区别,但在我看来,PWA和小程序、快应用、混合APP这些东西天生就不一样!

还记得PWA的全名吗?Progressive Web Apps,这里已经写得很明确了,它是Web App啊,React Native、小程序、快应用一直在致力于去HTML化,虽然他们都是使用Javascript作为开发语言进行编写的,但是你要知道,Javascript本就不是只为HTML而生的,如果你有阅读过相关书籍你就会知道,Javascript其实可以在浏览器以外的环境下运行!

以上其它应用,基本都已经摒弃了HTML中除了JS以外的其它内容,但是PWA不一样,它从骨子里仍然是一个Web页面!说到Web App,有些同学可能会嗤之以鼻,确实,当前市场下,Web App也就是移动端Web页面的份额已经极大化的萎缩(下图是google发布的移动Web和App使用时长占比),或者说Web App可能从来没有辉煌过,从传统电脑端转移到智能手机时代,中间的过渡其实非常短,相信这点大家都是感同身受的,但是现在,谁也说不准Web App是否来到了一个风口位置 -- 因为有了PWA,你访问的Web页面已经有了能够媲美原生App的体验!

图片描述


三、PWA将如何改变我们的移动体验?

当你在手机浏览器中打开一些Web网页时,经常会看到以下的页面:



这些Web App会推荐你打开它们的原生应用,如果你的手机没有下载则会跳转到相应的下载页面,但是对于用户来讲,在没有WIFI的情况下可能并不想为了一个不常用到的App消耗流量和系统内存,或者手机容量比较吃紧的用户,可能有时候会为了删除哪些应用保留哪些应用而犹豫不决,现在有了PWA,一切都能迎刃而解!而这些,还不是全部!

在2016年11月google团队已经在尝试并初步实现把「添加至主屏」重命名为「安装」,被安装的 PWA 不再仅以 widget 的形式显示在桌面上,而是真正做到与所有原生应用平级,一样被收纳进应用抽屉(App Drawer)里,一样出现在系统设置中。


PWA能够获得和原生APP同级的权限,也能够像原生APP一样实时获取推送消息,即使你在以后想要删掉这个PWA应用,你也依然可以在浏览器中获得高质量高体验的Web页面,在Web端,甚至Mac环境下也能享受到这种体验!


四、案例欣赏

国内外有一些优秀的技术团队已经开始尝试并推出了一些不错的PWA应用,我这里简单介绍下两个已知的

FlipKart(印度)

图片描述

离线情况下的视觉差异

图片描述


豆瓣(中国)

Alt text

Alt text

Alt text




更多专业前端知识,请上
【猿2048】www.mk2048.com
推荐阅读
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
author-avatar
徐毛毛的大猫儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有