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. 不要在using语句中调用WCF服务

    如果你调用WCF服务时,像下面的代码这样在using语句中进行调用,需要注意一个问题. using (CnblogsWcfClient client = new CnblogsWcfClient()) ...

  2. 【Leetcode】【Easy】Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  3. 【转】ssh timed out 超时解决方案

    转自:http://www.cnblogs.com/niutouzdq/p/4091268.html 在使用阿里云ECS服务器的时候,winsftp经常被服务器断开,想必是过一会没有操作,防火墙喜欢对 ...

  4. 『看球笔记』20131230切尔西vs利物浦,赛后复盘聊聊球

    2013-12-30 第十九轮英超联赛 切尔西vs利物浦         看着这张板凳合照… 有木有一种心里哇凉哇凉的感觉.   赛后whoscored的平均位置图 左边车子,右边我军     阿格回 ...

  5. IOS6 的特性 及 autoalyout的作用

    1.如果控件有默认的内容(宽高), 我们只需设置autoalyout的X/Y, autolayout会自动计算出宽高 2.Xcode6将Storyboard变成豆腐干的目的:在Xcode6之前, 如果 ...

  6. bash shell脚本之查看系统环境变量

    查看当前系统环境变量 cat test2: #!/bin/bash # display user information from the system. echo "User info f ...

  7. libevent evbuffer参考文章

    https://blog.csdn.net/FreeeLinux/article/details/52799951 http://cache.baiducontent.com/c?m=9d78d513 ...

  8. Codeforces 396A 数论,组合数学

    题意:给一个a数组,求b 数组的方案数,但是要求两者乘积相同. 分析: 不可能将它们乘起来,对于每个数质因数分解,得到每个质因子个数,遍历这些质因子,将某个质因子放到 对应的盒子里面,可以不放,方案数 ...

  9. WIN7系统 64位出现 Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).

    WIN7系统 64位出现  Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).请安装 Microsoft Data Acces ...

  10. 2018.11.21 struts2获得servletAPI方式及如何获得参数

    访问servletAPI方式 第一种:通过ActionContext (重点及常用 都是获得原生对象) 原理 Action配置 被引入的配置文件 在页面调用取值 第二种:通过ServletAction ...