1. 介绍

Progressive Web App , (渐进式增强 WEB 应用) 简称 PWA ,是提升WebApp的体验的一种新方法,能给用户原生应用的体验。

PWA 本质上是 Web App ,借助一些新技术也具备了Native App的一些特性,兼具 Web App和Native App的优点。

2. 优势

渐进式Web应用程序中相比于普通的Web应该存在以下一些优势。

  1. 可靠 
    应用程序在加载时应该快速闪电,它应该接近瞬时,并且当没有网络或像2G这样的低速网络时也应该打开。
  2. 快速
    当用户与Web应用程序交互时,滚动和页面过渡应该是黄油平滑的。每个人都讨厌蹩脚的卷轴。
  3. 响应
    应用程序应适合所有不同大小的设备。完美的网络应用程序应该像液体一样,采用其容器的形状。
  4. 可安装
    如果我们想让Web应用程序更接近本机应用程序,则必须可以安装它们并且应该与其他本机应用程序一起驻留在主屏幕中,以便用户只需单击一下即可访问PWA。
  5. 启动屏幕
    PWA在应用程序启动期间添加了启动画面。这使得PWA更像是原生应用程序
  6. 高度参与
    应用程序应保持用户参与。PWA提供诸如推送通知,主屏幕图标,全屏和离线第一应用程序等功能,以美化用户参与度。

3. 核心技术

PWA有一些重要的技术组件,它们协同工作并为常规Web应用程序注入活力。开发良好的PWA需要以下组件

3.1
Service Worker

3.1.1 描述

它是一种 Web Worker

它是一个外链的js文件,如 /sw.js

它是一种特殊的Web Worker,能够拦截网络请求

它只能运行在HTTPS协议上

它还能接受推送消息和
处理后台同步


一但被注册就永远存在,除非显示unregister


是 PWA 的核心

3.1.2 作用

普通应用程序直接与网络通信,如果没有网络,就无法打开正常的页面。

Service Worker虽然只是JavaScript代码组件,它可以作为浏览器和网络之间的代理。Service Worker可以使用浏览器的缓存API 帮助构建脱机的 Web应用程序。工作原理如下:

这不仅可以加快应用程序的性能,无论设备是连接还是未连接到互联网,还可以完全控制应用程序的行为以及应用程序在各种情况下的响应方式。

3.1.3 生命周期

Service
Worker存在自身的生命周期,如图所示

(1). 安装 ( installing ) :

这个状态发生在 Service Worker 注册之后,表示开始安装,触发 install 事件回调指定一些静态资源进行离线缓存。

(2). 安装后( installed ) :

Service
Worker 已经完成了安装,并且等待其他的 Service Worker 线程被关闭。

(3). 激活( activating ):

在这个状态下没有被其他的 Service Worker 控制的客户端,允许当前的 worker 完成安装,并且清除了其他的 worker 以及关联缓存的旧缓存资源,等待新的 Service Worker 线程被激活。

(4). 激活后( activated ) :

在这个状态会处理 activate 事件回调 (提供了更新缓存策略的机会)。并可以处理功能性的事件 fetch (请求)、 sync (后台同步)、 push (推送)。

(5). 废弃状态( redundant ) :

这个状态表示一个 Service Worker 的生命周期结束。进入废弃 (redundant) 状态的原因可能为这几种:

安装 (install) 失败

激活 (activating) 失败

新版本的 Service Worker 替换了它并成为激活状态

3.1.4 兼容性

如图所示,我们可以看到主流的浏览器都支持Service Worker

3.2
清单文件

清单文件是一个配置JSON文件,其中包含应用程序的信息,例如安装时主屏幕上显示的图标,应用程序的简称,背景颜色或主题。以下是示例清单文件: {
  "short_name": "Spinner",
  "name": "Fidget spinner",
  "icons": [
    {
      "src":
"/images/icons-192.png",

      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src":
"/images/icons-512.png",

      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url":
"/home/?source=pwa",

  "background_color":
"#3367D6",

  "display": "standalone",
  "scope": "/home/",
  "theme_color": "#3367D6"
}

从manifest.json文件中,我们可以轻松得到这个PWA的信息:

l  name :定义此PWA的名称。

l  icons :定义一系列的图标以适应不同型号的设备。

l  theme_color :主题颜色(影响手机状态栏颜色)。

l  background_color :背景颜色。

l  start_url :启动地址。由于PWA实际上是一个web页面,所以需要定义PWA 在启动时应该访问哪个地址。

l  display :“standalone”表示其以类似原生APP的全屏方式启动。

3.3  HTTPS

安全的 HTTP,也称为 HTTPS,是最关键的安全功能之一,许多现代 API 和 Progressive Web App 都需要使用它。人们对 HTTPS 有一个普遍的错误认识,认为只有处理敏感通信的网站才需要 HTTPS。隐私和安全性并不是使用 HTTPS 保护用户的充分理由,服务工作线程、Payment Request API 等许多新的浏览器功能也需要 HTTPS。

pwa学习笔记--简介的更多相关文章

  1. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  2. PWA 学习笔记(四)

    Service Worker 简介: 1.Service Worker 是 PWA 技术基础之一,脱离浏览器主线程的特性,使得 Web App 离线缓存成为可能, 更为后台同步.通知推送等功能提供了思 ...

  3. PWA 学习笔记(一)

    PWA 介绍 概念: PWA(Progressive web apps,渐进式 Web 应用)运用现代 Web API 和传统的渐进式增强策略来创建跨平台 Web 应用程序 它并不是一个快捷方式,而能 ...

  4. PWA 学习笔记

    深入学习网址:https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps 一. 基本介绍 1. 渐进式:适用所有浏览器,因为它是 ...

  5. [EXtJS5学习笔记]第一节 Sencha Cmd 学习笔记 简介 Sencha Cmd是什么

    本文地址: http://blog.csdn.net/sushengmiyan/article/details/38295575 本文作者:sushengmiyan ----------------- ...

  6. Redis学习笔记——简介及配置

    1.Redis简介 Redis概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案.Redis从它的许多竞争继承来的三个主要特点:Redis数据库 ...

  7. Storm学习笔记——简介

    1. 简介 流式计算的历史 早在7.8年前诸如UC伯克利.斯坦福等大学就开始了对流式数据处理的研究,但是由于更多的关注于金融行业的业务场景或者互联网流量监控的业务场景,以及当时互联网数据场景的限制,造 ...

  8. [转]dwr3框架学习笔记--简介及原理简介

    1.DWR简介 DWR(直接web远程访问),DWR是一个Java库,使服务器上的Java和JavaScript的浏览器进行交互和相互调用尽可能简单. DWR 是一个可以允许你去创建 AJAX WEB ...

  9. PWA 学习笔记(三)

    基础技术简介 Promise: 1.ES6 引入的一种异步编程的解决方案,通过 Promise 对象来提供统一的异步状态管理方法 2.一般在使用 Promise 对象的时候,首先需要对其进行实例化 3 ...

随机推荐

  1. 笨办法学Python(四十一)

    习题 41: 来自 Percal 25 号行星的哥顿人(Gothons) 你在上一节中发现 dict 的秘密功能了吗?你可以解释给自己吗?让我来给你解释一下,顺便和你自己的理解对比看有什么不同.这里是 ...

  2. Linux获取系统当前时间(精确到毫秒)

    #include <stdio.h> #include <time.h> #include <sys/time.h> void sysLocalTime() { t ...

  3. 如何使用代码获得一个function module的Where Used List

    如果要获得一个function module的Where Used List,我们通常用的办法是使用ABAP workbench里提供的功能. where used list显示结果如下: 但我接到一 ...

  4. NO.013-2018.02.18《鹊桥仙·纤云弄巧》宋代:秦观

    鹊桥仙·纤云弄巧_古诗文网 鹊桥仙·纤云弄巧 宋代:秦观 纤云弄巧,飞星传恨,银汉迢迢暗度.金风玉露一相逢,便胜却人间无数.(度 通:渡)纤薄的云彩在天空中变幻多端,天上的流星传递着相思的愁怨,遥远无 ...

  5. Android(java)学习笔记22:我们到底该如何处理异常?

    1. 我们到底该如何处理异常? (1)原则: 如果该功能内部可以将问题处理,用try,自己能解决就自己解决问题. 如果处理不了,交由调用者处理,这是用throws,自己不能解决的问题,我们就抛出去交个 ...

  6. c#主窗体以及副窗体弹出

    在program.cs中,Form1的位置就是主窗体的位置(主窗体特征:关闭窗体应用程序结束) 弹出副窗口(点击按钮弹出窗口) Close为关闭窗口(关闭对应对象,需要先自己new一个) this.C ...

  7. mybatis学习记录四——输入、输出映射

    6      输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 6.1.1     需求 完成用户信息的综合查询,需要传入查询条件很 ...

  8. sqlite迁移mysql(导入导出数据)

    第一步,将数据导出 进入sqlite3->.open [打开文件路径]->.cd [要保存的路径]->.output [导出文件名字.sql]->.dump 等待导出成功后,就 ...

  9. 【luoguP1086】【2004NOIP-Ua】花生采摘

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都 ...

  10. Android学习笔记_7_使用 sax 或者 dom 或者 pull 解析XML文件

    一.Pull解析介绍: Android上使用SAX和DOM方式解析XML的方法,并且对两种做了简单的比较,通过比较我们知道对在往往内存比较稀缺的移动设备上运行的Android系统来说,SAX是一种比较 ...