精华内容
下载资源
问答
  • 将任何网页或应用程序转换为渐进式Web应用程序(PWA)的简便方法。 渐进式Web App难以编码和调试:它们的API使用多线程和websocket。 开源社区中有一些选项可以提供帮助,例如Google的sw-precache ,但它们会产生...
  • 如何开发感觉像本机移动应用程序的渐进式Web应用程序 (How you can develop Progressive Web Apps that feel like native mobile apps) I’m currently developing a Progressive Web App that ...

    移动应用程序和网页应用程序

    by Samuele Dassatti

    通过萨穆尔达萨蒂

    如何开发感觉像本机移动应用程序的渐进式Web应用程序 (How you can develop Progressive Web Apps that feel like native mobile apps)

    I’m currently developing a Progressive Web App that will also serve as the native app of my next service.

    我目前正在开发一个渐进式Web应用程序,该应用程序还将用作我的下一个服务的本机应用程序。

    As many of you know, PWAs are apps that can run in the browser or in a standalone window and can take advantage of features native to the OS, such as push notifications and the ability to work offline.

    众所周知, PWA是可以在浏览器或独立窗口中运行的应用程序,它们可以利用操作系统固有的功能 ,例如推送通知和脱机工作能力。

    翻译自: https://www.freecodecamp.org/news/how-you-can-develop-progressive-web-apps-that-feel-native-5110fbbcbf4b/

    移动应用程序和网页应用程序

    展开全文
  • 看到PWA,似曾相识,但又感觉很模糊...全称:Progressive Web APP, 渐进 Web 应用。 实际上是通过 Web 技术编写出的一个网页应用,加上App Manifest和Service Worker来实现PWA的安装和离线缓存等功能。 解决了哪...

    看到PWA,似曾相识,但又感觉很模糊,于是乎,又重新翻阅文档,学习了一遍,顺便把相关知识学习了一下,比如service worker,workbox3。

    PWA 概念:
    全称:Progressive Web APP, 渐进式 Web 应用。

    实际上是通过 Web 技术编写出的一个网页应用,加上App Manifest和Service Worker来实现PWA的安装和离线缓存等功能。

    解决了哪些问题?

    可以添加至主屏幕,点击主屏幕图标可以实现启动动画及隐藏地址栏
    实现离线缓存功能
    实现了消息推送
    PWA 的实现-Manifest 实现添加至主屏幕
    首先在index.html的head中引入manifest.json文件,尽可能早的引入

    <head>
        ...
        <meta name="viewport" content="width=device-width, user-scalable=no" />
        <link rel="manifest" href =www.yongshiyule178.com"manifest.json">
        <link rel="stylesheet" type="text/css" href="main.css">
        ...
    </head>
    然后编写manifest.json文件,参考文档:https://developer.mozilla.org/zh-CN/docs/Web/Manifest

    {
      "name": "Minimal PWA", // 必填 显示的插件名称
      "short_name": "PWA Demo", // 可选  在APP launcher和新的tab页显示,如果没有设置,则使用name
      "description": "The app that helps you understand PWA", //用于描述应用
      "display": "standalone", // 定义开发人员对Web应用程序的首选显示模式。standalone模式会有单独的
      "start_url": "/", // 应用启动时的url
      "theme_color": "#313131", // 桌面图标的背景色
      "background_color": "#313131", // 为web应用程序预定义的背景颜色。在启动web应用程序和加载应用程序的内容之间创建了一个平滑的过渡。
      "icons": [ // 桌面图标,是一个数组
        {
        "src": "icon/lowres.webp",
        "sizes": "48x48",  // 以空格分隔的图片尺寸
        "type": "image/webp"  // 帮助userAgent快速排除不支持的类型
      },
      {
        "src": "icon/lowres",
        "sizes": "48x48"
      },
      {
        "src": "icon/hd_hi.ico",
        "sizes": "72x72 96x96 128x128 256x256"
      },
      {
        "src": "icon/hd_hi.svg",
        "sizes": "72x72"
      }
      ]
    }
    PWA的实现-Service Worker 实现离线缓存
    Service worker,是 Chrome 团队提出和力推的一个 WEB API,就像介于服务器和网页之间的拦截器,能够拦截进出的http请求,从而完全控制你的网站。

    最主要的特点:
    在页面中注册并安装成功后,运行于浏览器后台,不受页面刷新的影响,可以监听和拦截作用域范围内所有页面的 HTTP 请求。
    网站必须使用 HTTPS,处于安全考虑,避免被攻击。除了使用贝蒂开发环境调试。
    运行于浏览器后台,可以控制打开的作用域范围下所有的页面请求
    单独的作用域范围,单独的运行环境和执行线程
    不能操作页面 DOM ,但是可以通过事件机制来处理
    事件驱动型服务线程
    浏览器支持情况:


    生命周期
    解析成功(parsed)、正在安装(installing)、安装整个(installed)、正在激活(activating)、激活成功(activated)、废弃(redundant)

    若 installing 事件失败或 activeing 事件失败,service worker 都会被废弃。

    实现离线缓存
    首先在index.html中注册sw.js

    <script async src="/js/script.js"></script>     
    <script>
      // 注册 service worker
      if ('serviceWorker' in navigator) {           
        navigator.serviceWorker.register(www.444814.cn'/sw.js', {scope:www.leyou1178.cn/ '/'}).then(function (registration) {
          // 注册成功
          console.log('ServiceWorker registration successful with scope: ', registration.scope);
        }).catch(function (err)www.dfgj157.com {                   
          // 注册失败 :(
          console.log('ServiceWorker registration failed: ', err);
        });
      }
    </script>
    编写sw.js

    var cacheStorageKey = 'cachesName'
    var cacheList = [
      // 注册成功后要立即缓存的资源列表
    ]

    // 当浏览器解析完sw文件时触发install事件
    self.addEventListener('install', function(e) {
      // install事件中一般会将cacheList中要换存的内容通过addAll方法,拉一遍放入caches中
      e.waitUntil(
        caches.open(cacheStorageKey).then(function(cache) {
          return cache.addAll(cacheList)
        })
      )
    })

    // 激活时触发activate事件
    self.addEventListener('activate', function(e) {
      // active事件中通常做一些过期资源释放的工作,匹配到就从caches中删除
      var cacheDeletePromises = caches.keys(www.thd178.com).then(cacheNames => {
        return Promise.all(cacheNames.map(name => {
          if (name !www.thd540.com == cacheStorageKey) {
            return caches.delete(name);
          } else {
            return Promise.resolve(www.micheng178.com);
          }
        }));
      });

      e.waitUntil(
        Promise.all([cacheDeletePromises])
      )
    })

    self.addEventListener('fetch', function(e) {
      // 在此编写缓存策略, 需要根据不同文件的扩展名把不同的资源通过不同的策略缓存在caches中,各种css,js,html,图片,都需要单独搞一套缓存策略

      e.respondWith(
        // 可以通过匹配缓存中的资源返回
        caches.match(e.request)
        // 也可以从远端拉取
        fetch(e.request.url)
        // 也可以自己造
        new Response('自己造')
        // 也可以通过吧fetch拿到的响应通过caches.put方法放进chches
      )
    })
    workbox3
    workbox3,Google官方 PWA 框架,解决的就是 Service Worker 编写太过复杂的问题。

    // 首先引入workbox框架
    importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.3.0/workbox-sw.js');

    workbox.precaching([
      // 注册成功后要立即缓存的资源列表
    ])

    // 缓存策略: networkFirst、cacheFirst、staleWhileRevalidate
    workbox.routing.registerRoute(
      new RegExp(''.*\.html'),
      workbox.strategies.networkFirst()
    );

    workbox.routing.registerRoute(
      new RegExp('.*\.(?:js|css)'),
      workbox.strategies.cacheFirst()
    );

    workbox.routing.registerRoute(
      new RegExp('https://your\.cdn\.com/'),
      workbox.strategies.staleWhileRevalidate()
    );
    生成缓存策略,可以采用workbox-build npm 包或者workbox-webpack-plugin方式自动生成。

    缓存策略:

    stateWhileRevalidate:当请求的路由有对应的 Cache 缓存结果就直接返回,在返回 Cache 缓存结果的同时会在后台发起网络请求拿到请求结果并更新 Cache 缓存,如果本来就没有 Cache 缓存的话,直接就发起网络请求并返回结果,这对用户来说是一种非常安全的策略
    networkFirst:当请求路由是被匹配的,就采用网络优先的策略,也就是优先尝试拿到网络请求的返回结果,如果拿到网络请求的结果,就将结果返回给客户端并且写入 Cache 缓存,如果网络请求失败,那最后被缓存的 Cache 缓存结果就会被返回到客户端,这种策略一般适用于返回结果不太固定或对实时性有要求的请求,为网络请求失败进行兜底。
    cacheFirst:当匹配到请求之后直接从 Cache 缓存中取得结果,如果 Cache 缓存中没有结果,那就会发起网络请求,拿到网络请求结果并将结果更新至 Cache 缓存,并将结果返回给客户端。这种策略比较适合结果不怎么变动且对实时性要求不高的请求
    networkOnly:强制使用正常的网络请求,并将结果返回给客户端,这种策略比较适合对实时性要求非常高的请求。
    cacheOnly:直接使用 Cache 缓存的结果,并将结果返回给客户端,这种策略比较适合一上线就不会变的静态资源请求。
    如果以上策略都不满足需求,还可以自定义策略
    参考文档
    讲讲PWA
    背景
    What's PWA?
    PWA的实现
    Manifest实现添加至主屏幕
    service worker实现离线缓存
    serice worker实现消息推送
    总结:PWA的优势和存在的问题
    参考文档
    Vue笔记九:pwa技术在vue的使用(workbox/sw-precache)
    历史背景
    sw-precache 和 workbox
    缓存机制
    安全性
    Workbox 3.0 – Web 站点轻松做到离线可访问
    概述
    用法
    precache (预缓存)静态文件
    处理/和/index.html
    忽略请求参数
    生成预缓存列表
    workbox 命令行
    workbox-build npm 包
    workbox-webpack-plugin
    路由请求缓存
    字符串方式
    正则表达式fangs
    回调函数方式
    路由请求缓存策略
    state while revalidate
    network first
    cache first
    network only
    cache only
    自定义策略
    第三方请求的缓存
    workbox 配置
    配置缓存名称
    指定 development 环境
    配置日志 level: debug、log、warning、error
    workbox 插件
    自定义插件
    webpack 中使用 workbox 实现 PWA
    Workbox3 - ServiceWorker可以如此简单
    科普ServiceWorker
    一个完整的ServiceWorker
    workbox3
    经验之谈
    Service Worker 生命周期
    解析成功(parsed)、正在安装(installing)、安装整个(installed)、正在激活(activating)、激活成功(activated)、废弃(redundant)

    展开全文
  • PWA(渐进 web 应用)

    2020-06-27 09:38:06
    PWA 全称是渐进 web 应用,它是用一系列前端技术来实现的,目标是提供类似原生APP一样的体验。 解决的问题: Web 的用户体验 首屏加载速度 网页离线无法访问 用户留存 Native App 安装完毕桌面上有一个入口 ...

    Progressive Web Application

    背景

    PWA 全称是渐进式 web 应用,它是用一系列前端技术来实现的,目标是提供类似原生APP一样的体验。

    解决的问题:

    • Web 的用户体验
      1. 首屏加载速度
      2. 网页离线无法访问
    • 用户留存
      1. Native App 安装完毕桌面上有一个入口
      2. Native App 能够通过发送通知让用户再次回到应用中来
      3. Web App需要记住URL并输入地址
    • Device API 的不完善
      1. Native App 更方便访问设备硬件和设备上的数据
      2. WebAPI的推进

    关键时间节点:

    • 2014年,W3C 就公布过 Service Worker 的相关草案
    • 2015年,chrome生产环境支持Service Worker
    • 2018年2月,win10和edge全面支持pwa
    • 2018年3月,ios11.3支持pwa
    • 2019年3月,iOS 12.2 版本修复了 PWA 很多致命的体验问题,支持了 Web Share API 等
    • 至今,PWA被提出到现在,已经过去了4年,通过 Service Worker,Web = - App Manifest 等技术的使用,不仅在体验上达到了他们的标准,同时还具有了 Web App 的产品迭代速度

    什么是PWA


    主要特点

    • 可靠 - 即使在网络不稳定甚至断网的环境下,也能瞬间加载并展现
    • 用户体验 - 快速响应,具有平滑的过渡动画及用户操作的反馈
    • 用户黏性 - 和 Native App 一样,可以被添加到桌面,能接受离线通知,具有沉浸式的用户体验

    使用pwa的基本要求

    • 站点需要使用 HTTPS
    • 页面需要响应式,能够在平板和移动设备上都具有良好的浏览体验
    • 所有的 URL 在断网的情况下有内容展现,不会展现浏览器默认页面
    • 需要支持 Wep App Manifest,能被添加到桌面
    • 即使在 3G 网络下,页面加载要快,可交互时间要短
    • 在主流浏览器下都能正常展现
    • 动画要流畅,有用户操作反馈
    • 每个页面都有独立的 URL

    对比传统 Web App,Native App 和 PWA

    在这里插入图片描述

    PWA的核心技术


    Web App Manifest

    • 兼容性:83%
    • 技术实现:manifest.json 开发者配置 PWA 的相关信息,应用名称、图标、启动方式、背景颜色、主题颜色等等,添加到桌面后,能够在系统中作为一个独立的 App 存在,具有启动画面、沉浸式浏览体验。未来PWA会被系统的应用商店收录,目前 Windows 10已经支持。

    Service Worker

    • 兼容性:94.25%
    • 技术实现:service-work.js
    • 主要功能
      1. 一个特殊的 worker 线程,独立于当前网页主线程,有自己的执行上下文
      2. 不能直接操作 DOM
      3. 一旦被安装,就永远存在,除非显示取消注册
      4. 使用到的时候浏览器会自动唤醒,不用的时候自动休眠
      5. 可拦截并代理请求和处理返回,可以操作本地缓存,如 CacheStorage,IndexedDB 等
      6. 离线内容开发者可控
      7. 离线期间网络期间可以在网络恢复后同步
      8. 能接受服务器推送的离线消息
      9. 必须在 HTTPS 环境下才能工作

    离线通知

    • 兼容性:79.51%
    • 技术实现:Web Push 和 Notification API

    service worker


    作用域

    • scope和文件所在路径控制最大作用域范围
    • 尽量避免作用域污染
    • SPA注册在项目根目录
    • MPA注册单个注册在根目录
    • MPA注册多个注册在子目录

    更新策略
    浏览器通过自身 diff 算法能够检测 service work 的更新包含两种方式

    • Service Worker 文件 URL 的更新(时间戳和版本号做查询字符串)
    • Service Worker 文件内容的更新(更新文件内容)

    生命周期
    在这里插入图片描述

    • install 安装成功,每次安装前先注销之前所有的service worker
    • active 激活成功

    用户留存


    mainfest字段详解

    short_name: 应用展示的名称(桌面上显示的名称)
    
    icons: 定义不同尺寸的应用图标
    
    start_url: 定义桌面启动的 URL
    
    description: 应用描述,可以参考 meta 中的 description
    
    display: 定义应用的显示方式,有 4 种显示方式,分别为:
    
        fullscreen: 全屏
    
        standalone: 应用
    
        minimal-ui: 类似于应用模式,但比应用模式多一些系统导航控制元素,但又不同于浏览器模式
    
        browser: 浏览器模式,默认值
    
    name: 应用名称(浏览器提示用户添加和Android启动屏显示的名称)
    
    orientation: 定义默认应用显示方向,竖屏、横屏
    
    background_color: 应用加载之前的背景色,用于应用启动时的过渡
    
    theme_color: 定义应用默认的主题色
    
    dir: 文字方向,3 个值可选 ltr(left-to-right), rtl(right-to-left)auto(浏览器判断),默认为 auto
    
    scope: 定义应用模式下的路径范围,超出范围会已浏览器方式显示
    

    修复ios上icon配置失效

    <link rel="apple-touch-icon" href="/img/mobile-homescrenn-192x192.png">
    

    离线存储


    1. 资源请求拦截

    2. 本地存储管理

    3. 预缓存方案

    • Network First
    • Cache First
    • Network Only
    • Cache Only
    • Stale While Revalidate

    workbox

    案例


    微博

    展开全文
  • 今天是第一次接触PWA这一理念, PWA最棒的一点是:渐进,如果构建一个PWA即使在一个不支持的老旧浏览器上运行...他会像原生应用那样,通过单击图标便可轻松访问一个web应用 Twitter PWA 应用的特点如下: 响应...

    今天是第一次接触PWA这一理念,

    PWA最棒的一点是:渐进式,如果构建一个PWA即使在一个不支持的老旧浏览器上运行,它仍然可以作为一个普通的网站来运行

    PWA使得一些应用不通过应用商城进行打包和部署,它们只是汲取了所需要的原生应用功能的网站而已

    PWA允许将“添加”到设备的主屏幕上。他会像原生应用那样,通过单击图标便可轻松访问一个web应用

    Twitter PWA 应用的特点如下:

    • 响应式的---他适应较小的屏幕尺寸
    • 连接无关的---由于Service Worker缓存,他可以离线缓存(离线缓存会不会意味着内存占用量大)
    • 应用式的交互---它使用应用外壳架构进行构建
    • 始终保持最新---由于Service Worker的更新过程,它会不断更新
    • 安全的---他通过https进行工作
    • 可发现性---搜索引擎可以找到它
    • 可安装的---使用清单文件可以进行安装
    • 可连接的---可以通过URL来轻松分享

    推荐几个国内pwa

    微博、贴吧、饿了么、汽车之家、淘宝

    展开全文
  • 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互 Web 应用,将你的数据分析成果立即展示给团队和客户。痛点从我开始折腾数据分析工具的那一天,就没有想明白一件事儿 —— 我打算把数据分析的成果做成一...
  • 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互 Web 应用,将你的数据分析成果立即展示给团队和客户。痛点从我开始折腾数据分析工具的那一天,就没有想明白一件事儿 —— 我打算把数据分析的成果做成一...
  • Service Worker 让网页无网络也能访问今天不讲 Kotlin 了,讲讲 PWA (渐进式Web应用) 介绍首先,写给所有移动端开发的同学:PWA(Progressive Web Apps) 一定是将来的移动开发趋势,且学且珍惜。Progressive Web ...
  • 响应式网页应用-PWA

    2019-09-14 08:43:39
    响应式网页应用-PWA是Progressive Web App的英文缩写,渐进增强WEB应用。一个为响应设计的“保护伞”的术语,是 Google 在2015年提出的概念,2017年落地的web技术。目的就是在移动端利用提供的标准化框架,在...
  • 通过描述文件 缓存资源:  创建描述文件: manifest file 是一种特殊文件, 告诉浏览器保存什么文件, ... 修改网页应用描述文件; 浏览器在请求页面时 就会下载描述文件;  配置web服务器:  更新描述文件:
  • 个人渐进式Web应用程序配置文件-网页。 该项目的下一个迭代将是添加json文件,以方便配置使用。 我们还将在其他分支中提供基于Firebase的版本,这将使生活变得更加简单! 在此处启动演示PWA: : 。 通过此处的...
  • React Web应用程序 嵌入了使用react的响应和交互技术的网页应用程序
  • PWA 编辑讨论 PWA(Progressive Web App)是一种理念,使用多种技术...在移动端利用标准化框架,让网页应用呈现和原生应用相似的体验。[1] https://baike.baidu.com/item/PWA/22378897?fr=aladdin http:/...
  • 使用Vue.js构建渐进式Web应用程序 使用Vue.js的可靠,快速和吸引人的应用程序 使用Vue.js构建渐进式Web应用程序为读者提供了用于开发渐进式Web应用程序(PWA)的必要工具。 PWA的行为类似于常规网站,并且具有与Web...
  • 分享一套优质、精美的Bootstrap 4响应式Web应用程序后台管理系统模板,此模板集成了Bootstrap 4,HTML 5、CSS3以及jQuery等现代流行的前端开发框架和技术。此模板是一套功能强大并且灵活的后台管理系统模板,非常...
  • JWt is a Java library for developing web applications. It provides a pureJava component-driven approach to building web applications,and renders either using Ajax or plain HTML.Unlike JSF...
  • 1.什么是pwa?  PWA是指可以在任何... 一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能。解决了哪些问题?可以...
  • 什么是Inferno Inferno可以看做是React的另一个精简、高性能实现。它的使用方式跟React基本相同,无论...不过Inferno是专门针对网页开发的,不能像React Native那样开发移动端本地APP。 为什么要用Inferno? 既...
  • Web应用 VS 本地应用 Service Worker 设计思路 浏览器三大进化路线: 应用程序Web化 Web应用移动化 Web操作系统化 主要说一下第二个:Web应用移动化 对于收集设备来说,前有本地App,后有移动小...
  • 服务器发送的实现: server-sent event, 让服务器能够定时给网页发送消息; web socket框架: 让浏览器与服务器能够随心所欲地双向通信。 向服务器发送消息: XHR, Ajax 技术, 是一对一的; 不属于...
  • 响应式Web设计(Responsive Web design),理念是设计和开发应根据屏幕的大小、平台的用户的行为和环境基础上自动调整;他应该有一个灵活的网格和布局,图像和CSS能够智能的组合 使用。比如说用户从电脑切换到ipad,...
  • AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用网页开发技术。 主要包含了以下几种技术Ajax(Asynchronous JavaScript + XML)的定义 基于web标准...
  • \要点\\渐进式网页应用同时具有网站和移动应用的功能。\\t它们既可在线又可离线工作,在两个方面都可以充分发挥作用。...\\渐进式网页应用(Progressive Web Apps,简称PWA)是一个新的概念,它弥合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,844
精华内容 737
关键字:

网页式web应用