PWA(Progressive Web App)初探总结,零基础入门到精通,收藏这篇就够了

什么是PWA(Progressive Web App)?它有哪些特点和优势? PWA的核心概念示例一:设置Service Worker示例二:注册Service Worker示例三:添加到主屏幕示例四:实现推送通知示例五:处理离线状态不同角度的功能使用思路实际工作中的使用技巧在现代Web开发中,Progressive Web Apps(简称PWA)已经成为了一种趋势,它结合了Web应用和原生应用的最佳特性,为用户提供了一种全新的体验。本文旨在深入探讨PWA的基本概念,其独特之处以及如何利用这些特性来增强你的Web应用。 阅读详情

【 PWA 】

    今天开始 Research 一个新的前端技术,PWA( 全称:Progressive Web App )也就是说这是个渐进式的网页应用程序。这个技术的呢是 Google 公司于2015 年提出的,2016 年 6 月才推广的项目。针对这一项技术目前在国外似乎已经很流行了,目前应用这项技术最火热的应用是在印度( 大家或许会疑惑为什么是在印度最流行呢吧,下文中会告诉大家哦 ),既然 PWA 这项技术在国外已经非常的流行了,那么在国内或许会不远了( Angular 5 中新增的功能中,重点在于能够更轻松的构建渐进式网络应用程序,也就是 PWA 了。作为Google 和 mozilla 的产物,肯定会越来越重视啦 )我引用一下关于PWA技术的一篇最早的博客文中的一句话吧: “ escaping tabs without losing our soul “( 翻译一下哈:逃避选项卡而不丢失我们的灵魂 )。



    官网上给出 PWA 的宣传是 : Reliable ( 可靠的 )、Fast( 快速的 )、Engaging( 可参与的 )( 官网:[https://developers.google.com/web/progressive-web-apps/](https://developers.google.com/web/progressive-web-apps/)     ps:需要翻墙哦  )。简单的说一下这三个特性:



             Reliable : 为什么他是可靠的呢,当用户从手机主屏幕启动时,不用考虑网络的状态是如何,都可以立刻加载出 PWA。



  ![](https://img-blog.youkuaiyun.com/20170824160646863?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTkyMzgxMzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)



             Fast:这一点应该都很熟悉了吧,站在用户的角度来考虑,如果一个网页加载速度有点长的话,那么我们会放弃浏览该网站,所以 PWA 在这一点上做的很好,他的加载速度是很快的。

             Engaging : PWA 可以添加在用户的主屏幕上,不用从应用商店进行下载( 似乎省了下载流量哦!)他们通过网络应用程序 Manifest file 提供类似于 APP 的使用体验( 在 Android 上可以设置全屏显示哦,由于 Safari 支持度的问题,所以在 IOS 上并不可以 ),并且还能进行 ”推送通知” 。



                                           ![](https://img-blog.youkuaiyun.com/20170824161159688)





     这三个主特性似乎能解释我在前言中所说的 ”在印度最流行“ 。小小的普及一下,根据2016年第三季度的 IDC统计数据显示,印度的智能手机的出货量达到了3亿,同时也超过了美国,成为了全球第二大只能手机市场。皮尤斯数据报告 2015 年曾统计过“全球智能手机拥有率”。印度只有 17% 的人口用的是智能手机。虽然绝大部分人有手机用,但为非智能机,另有 22% 的人没有手机。针对印度的移动网络流量来说,网络状况是非常不佳的,根据16年的 GSMA 印度移动经济报告显示,网络覆盖率为34.8% 。主要集中在城镇,印度广大的农村还处于网络盲区,城乡数字化鸿沟很大。在印度,2G/3G 最主流,且 2G 占比还远高于 3G , 所以针对这种状态来说,PWA 技术最适合不过了。 



    在我对 PWA 技术的研究中发现 PWA 其中有三个关键的技术:



            **Service Worker**( ps:就叫做服务工厂吧,文章最后一条 URL 是 SW 的全面进阶,可以研究研究哦 )

            **Manifest** (应用清单)



            **Push Notification**(推送通知)



    下面我一一介绍着三个关键的技术:



            **Service Worker( 以下用SW来代替 ) :**



            SW 是什么呢?这个是离线缓存文件。我们 PWA 技术使用的就是它!SW 是浏览器在后台独立于网页运行的脚本,它打开了通向不需要网页或用户交互的功能的大门,因为使用了它,才会有的那个 Reliable 特性吧,SW 作用于 浏览器于服务器之间,相当于一个代理服务器( 用一张图来表示一下他的位置 )。

                                      ![](https://img-blog.youkuaiyun.com/20170824160815018)



            为什么会用到 SW 呢?原声 App 拥有Web应用通常所不具备的富离线体验,定时默认更新,消息推送等功能,而 SW 标准让在 Web App 上拥有这些功能成为可能!

            跟 SW 相同的 API 还有 App Cache ,为什么不使用它呢? App Cache 是有局限性的,比如说:它很容易得解决 single web page application ( 单页面应用 )的问题,但是在多页面应用上会很麻烦, SW 解决的这个 App Cache 的缺点!



     下面我简单而详细的说一下 SW :



          1、 **浏览器支持**

                    顺便带一句:目前只能在 HTTPS 环境下才能使用SW,因为SW 的权利比较大,能够直接截取和返回用户的请求,所以要考虑一下安全性问题。



                     ![](https://img-blog.youkuaiyun.com/20170824160824506)



           2、事件机制

                                                ![](https://img-blog.youkuaiyun.com/20170824160840779)

           3、 功能

                 SW的功能还是比较逆天的!
  • 后台数据的同步

  • 从其他域获取资源请求

  • 接受计算密集型数据的更新,多页面共享该数据

  • 客户端编译与依赖管理

  • 后端服务的hook机制

  • 根据URL模式,自定义模板

  • 性能优化

  • 消息推送

  • 定时默认更新

  • 地理围栏

           4、 生命周期
    
    
    
                       ![](https://img-blog.youkuaiyun.com/20170824160846422)
    
                  Parsed ( 解析成功 ): 首次注册 SW 时,浏览器解决脚本并获得入口点,如果解析成功,就可以访问到 SW 注册对象,在这一点中我们需要在 HTML 页面中添加一个判断,判断该浏览器是否支持 SW 。
    
                  Installing ( 正在安装 ):SW 脚本解析完成之后,浏览器会尝试进行安装,installing 中 install 事件被执行,如果其中有 event.waitUntil ( ) 方法,则 installing 事件会一直等到该方法中的 Promise 完成之后才会成功,如果 Promise 被拒绝,则安装失败,SW会进入 Redundant( 废弃 )状态。
    
    
    
                  Installed / Waiting (安装成功/等待中):如果安装成功,SW 将会进入这个状态。
    
    
    
                  Activating ( 正在激活 ):处于 waiting 状态的 SW 发生以下情况,将会进入 activating 状态中:
    
                          当前已无激活状态的 worker 、 SW脚本中的 self.skipWaiting()方法被调用 ( ps: self 是 SW 中作用于全局的对象,这个方法根据英文翻译过来也能明白什么意思啦,跳过等待状态 )、用户已关闭 SW 作用域下的所有页面,从而释放了当前处于激活状态的 worker、超出指定时间,从而释放当前处于激活状态的 worker 
    
    
    
                  Activated ( 激活成功 ):该状态,其成功接收了 document 全面控制的激活态 worker 。
    
    
    
                  Redundant ( 废弃 ):这个状态的出现时有原因的,如果 installing 事件失败或者 activating 事件失败或者新的 SW 替换其成为激活态 worker 。installing 事件失败和 activating 事件失败的信息我们可以在 Chrome 浏览器的 DevTools 中查看:
    
                                                     ( ps:我这个是正常的状态下的 ,错误的话会有 error 提示的 )
    
                    ![](https://img-blog.youkuaiyun.com/20170824160851206)
    
    
    
          5、主要依赖
    
    
    
                SW 作为现代浏览器的高级特性,依赖于 fetch 、promise 、CacheStorage、Cache、等浏览器的基础能力, Cache 提供了 Request / Response 对象对的存储机制。CacheStorage 则提供了存储 Cache 对象的机制。
    
    
    
                                                ![](https://img-blog.youkuaiyun.com/20170824160856995)
    
    
    
        6、安全性问题
    
    
    
             跨域请求支持:  SW 可以拦截它作用域内的所有请求,跨域资源也不例外,但是浏览器默认对跨域资源发起的是 no-cors 请求,得到的 response 是 opaque 的, 所以会导致我们无法判断跨域请求是否成功,以便进行缓存,因此我们需要修改 fetch 请求头部信息,添加 mode:’cors’ 标记。
    
    
    
            ( 名词解释一下喽,这部分知识是关于 fetch API 的,想了解更多的同学,自行搜索相关的知识哈 )
    
            no-cors:该模式允许来自 CDN 的脚本、其他域的图片和其他一些跨域资源,但是首先有个前提条件,就是请求的 method 只能是 HEAD 、GET 、POST 。此外,如果 ServiceWorkers 拦截了这些请求,它不能随意添加或者修改除这些之外 Header 属性。第三,JS 不能访问 Response 对象中的任何属性,这确保了跨域时 ServiceWorkers 的安全和隐私信息泄漏问题。
    
            opaque:Response 对象中 type 属性的值 , 在 ‘no-cors’ 模式下请求了跨域资源,依靠服务端来做限制。
    
    
    
        分享给大家一个 SW 全面进阶的博文:
    
    
    
    **Manifest ( 应用清单 )**
    
    
    
          Web App Manifest 是一个 W3C 规范,它定义了一个基于 JSON 的 List 。Manifest 在 PWA 中的作用有:
    
              能够将你浏览的网页添加到你的手机屏幕上
    
              在 Android 上能够全屏启动,不显示地址栏 ( 由于 Iphone 手机的浏览器是 Safari ,所以不支持哦)
    
              控制屏幕 横屏 / 竖屏 展示
    
              定义启动画面
    
              可以设置你的应用启动是从主屏幕启动还是从 URL 启动
    
              可以设置你添加屏幕上的应用程序图标、名字、图标大小
    
    
    
    **Push Notification ( 消息通知 )**
    
    
    
          Push 和 Notification 是两个不同的功能,涉及到两个 API 。
    
    
    
          Notification 是浏览器发出的通知消息。
    
          Push 和 Notification 的关系,Push:服务器端将更新的信息传递给 SW ,Notification: SW 将更新的信息推送给用户。
    
    
    
    **缺点:**
    
            
    
          1、浏览器的支持度问题,尤其是 Safari 浏览器,这样就会导致我们在 IOS 系统手机上没办法体验 PWA 。( 谁让 ‘ 果果 ’ 不是开源的呢 )
    
            
    
          2、根据国情来看哈,目前 Native App 的使用用户都已经习惯了,虽然会下载一下,但是现在 WiFi 到处都是了,毕竟 WiFi 的普及太快了。让用户使用 PWA 来替代 Native App 短时间会不适应的。
    
          3、消息推送问题,PWA的消息推送走的是 GCM( FCM )通道。而国内 Google 是无法访问的。(只能翻墙了,但是工信部已经禁止使用 VPN 了。) 
    
          总体来说:
    
                Google 的技术在国内推进比较缓慢,所以 PWA 在国内的发展是有多困难吧。
    

【 Demo 】

       首先呢,我们用到有 Node 和 Ngrok 。Node 的使用以及安装我就不说啦,作为一名前端开发工程师肯定会使用的啦。不会使用也米有关系啦,我们有度娘呢,Ngrok 的安装以及使用我就直接共享一个URl吧:[http://blog.youkuaiyun.com/tomcat\_2014/article/details/68944066](http://blog.youkuaiyun.com/tomcat_2014/article/details/68944066)( ps:我就偷懒一下 )

       对了,我使用的是 Mac 本(我司配的啦),所以我接下来的流程和截图都是 Mac 本上的。

       我们先创建一个关于 PWA 的项目文件夹,

            进入文件夹下我们准备一张 120x120的图片一张,作为我们的应用程序图标。

            创建一个 index.html  文件

            创建一个 index.css 文件

            创建一个 manifest.json 文件

            创建一个 sw.js 文件

            利用终端,安装一下 http-server 服务

            下面我们看一下每个文件中的代码是什么吧:



            index.html

    ![](https://img-blog.youkuaiyun.com/20170824160902297)

            index.css

             ![](https://img-blog.youkuaiyun.com/20170824160907938)



            manifest.json

                short\_name: “ " 用户主屏幕上的应用名字

                display : “standalone"  设置启动样式,让您的网络应用隐藏浏览器的 URL 地址栏

                start\_url : “/“ 设置启动网址,如果不提供的话,默认是使用当前页面

                theme\_color : “ “  用来告知浏览器用什么颜色来为地址栏等 UI 元素着色

                background\_color: “ ” 设置启动页面的背景颜色

                icons:””  就是添加到主屏幕之后的图标



            ![](https://img-blog.youkuaiyun.com/20170824160912414)



            sw.js



            处理静态缓存,首先定义需要缓存的路径,以及需要缓存的静态文件的列表。

            借助 SW 注册完成安装 SW 时,抓取资源写入缓存中。使用了一个方法那就是 self.skipWaiting( ) 这个方法我在前边介绍的时候也说了,为了在页面更新的过程当中,新的 SW 脚本能够立刻激活和生效。



            ![](https://img-blog.youkuaiyun.com/20170824160917651)

             处理动态缓存,我们监听 fetch 事件,在 caches 中去 match 事件的 request ,如果 response 不为空的话就返回 response ,最后返回 fetch 请求,在 fetch 事件中我们可以手动生成 response 返回给页面。

             更新静态资源,缓存的资源会跟随着版本的更新会过期的,所以会根据缓存的字符串名称清除旧缓存。在新安装的 SW 中通过调用 self.clients.claim( ) 取得页面的控制权,这样之后打开页面都会使用版本更新的缓存。旧的 SW 脚本不在控制着页面之后会被停止,也就是会进入 Redundant 期。

            ![](https://img-blog.youkuaiyun.com/20170824160921592)



            以上截图中最左侧是我文件下的列表喽,下面我们来运行一下,终端启动 http-server 服务,我们以关闭缓存的方式进行启动。



            ![](https://img-blog.youkuaiyun.com/20170824160925409)



            接下来我们使用 ngrok 这个工具,进行内网穿透。在上边启动 http-server 服务的时候我们使用默认的端口号 8080 。所以我们在 ngrok 中我们绑定 端口 8080 。输入命令 : ./ngrok http 8080 之后我们看一下。(记得再打开一个终端哦,在另一个终端中进行操作)



            ![](https://img-blog.youkuaiyun.com/20170824160929073)



            我们看到绿色的字母 online 表示内网穿透成功了,我们看最后一个 Forwarding     https:// 的,因为我们在上边介绍了,SW 的权利比较大,为了保证信息的安全性,我们使用 https 协议来进行访问。我们把它复制下来在 chrom 浏览器中打开,-> 符号后边的就不用复制了哈。( 每个人的 ‘隧道’ 都是不一样的哦,这一点同学们可以在 ngrok 官网中进行查询哦 )。

             我们打开 chrom 的调试工具,打开 application ,点击 service workers 之后我们会发现 sw.js 脚本已经存到了 SW 中 。



            ![](https://img-blog.youkuaiyun.com/20170824160934848)



            我们打开 Network 刷新页面一下,看看,我们的页面资源来自 SW 而不是其他的地方,在 Console 中也打印出了我们在 index.html 中判断的语句,浏览器支持就会打印出这一句话哦。



            ![](https://img-blog.youkuaiyun.com/20170824160945646)



            接下来我们断网操作,在 Application 中给 Offline 打上对勾就行啦。然后刷新页面,我们仍然能看到之前的页面,原因就是我们在上图看到,他的资源是从 SW 上获得到的。当我们第一次打开这个页面的时候,Resopnse 对象被存到了 Cache Storage ( 定义在 SW 规范中 ,相关资料请同学们自行查询啦 )中,我们看下图:



            ![](https://img-blog.youkuaiyun.com/20170824160950769)

            通过存放到 Cache Storage 中,我们下次访问的时候如果是弱网或者断网的情况下,就可以不走网络请求,而直接就能将本地缓存的内容展示给用户,优化用户的弱网及断网体验。



            这个时候肯定会有同学在想,如果内容更新了,那么页面展示的内容是新内容呢还是旧内容呢?下面我们操作一下,打开 index.html 文件,我们在 body 中添加一个 p 标签 ,然后回到页面刷新。



            ![](https://img-blog.youkuaiyun.com/20170824160956867)

            我们看到,页面上的内容并没有显示出我刚刚添加的那个 p 标签。这说明了,我们拿到的数据还是从 Cache Storage 中获取到的,Cache Storage中的内容并没有更新,那么我们怎么才能让我刚刚添加的那个 p 标签显示出来呢。

            我们打开 sw.js 脚本文件,我们修改一下 cacheStorageKey。



            ![](https://img-blog.youkuaiyun.com/20170824161007189)

            我们关闭一下浏览器,然后再次打开该网址,页面出现了我们刚刚添加的那个 p 标签。我们再看一下 Cache Storage 中的缓存名字,已经被修改。



            ![](https://img-blog.youkuaiyun.com/20170824161012249)

【 总结 】

    总结一下吧,在研究这个 PWA 的过程中,搜索了相关的一大部分知识,就怕自己的脑洞不够大。感觉 PWA 涉及到的 API 比较多。要想研究透彻 PWA 还需要研究它所涉及到的 API ,慢慢研究吧。npm 中已经有这个包了哦。想真实的对 PWA 做深入研究的同学,可以应用到实际项目中。( 我感觉,会有很多坑 ),不过呢,作为一名前端开发工程师,对于这种技术研究来说,当然是有坑就补,没坑挖坑补。我会在接下来的日子中,抽出时间对 PWA 进行深入研究的。当然也会共享给大家。



    上文中如果有说错的,或者错误的,欢迎各位大神指出!可以直接加我 QQ :568815707 ,说明意图哦,不然会拒绝的。

参考URL( 有的是需要翻墙的哦 ):

            [https://developers.google.com/web/progressive-web-apps/](https://developers.google.com/web/progressive-web-apps/)

            [http://foio.github.io/service-worker-cache/](http://foio.github.io/service-worker-cache/)

            [http://bubkoo.com/2015/05/08/introduction-to-fetch/](http://bubkoo.com/2015/05/08/introduction-to-fetch/)

            [http://www.dongcoder.com/detail-437618.html](http://www.dongcoder.com/detail-437618.html)

            [http://imweb.io/topic/56592b8a823633e31839fc01](http://imweb.io/topic/56592b8a823633e31839fc01)

            [https://75team.com/post/lifecycle.html](https://75team.com/post/lifecycle.html)

            [https://segmentfault.com/a/1190000006061528](https://segmentfault.com/a/1190000006061528)

            [https://www.w3ctech.com/topic/866](https://www.w3ctech.com/topic/866)

            [http://dongcoder.com/detail-397355.html](http://dongcoder.com/detail-397355.html)

            [https://www.npmjs.com/package/web-pwa](https://www.npmjs.com/package/web-pwa)

            [https://www.villainhr.com/tag/SW](https://www.villainhr.com/tag/SW)

2025开年,AI技术打得火热,正在改变前端人的职业命运:

阿里云核心业务全部接入Agent体系;

字节跳动30%前端岗位要求大模型开发能力;

腾讯、京东、百度开放招聘技术岗,80%与AI相关……

大模型正在重构技术开发范式,传统CRUD开发模式正在被AI原生应用取代!

最残忍的是,业务面临转型,领导要求用RAG优化知识库检索,你不会;带AI团队,微调大模型要准备多少数据,你不懂;想转型大模型应用开发工程师等相关岗,没项目实操经验……这不是技术焦虑,而是职业生存危机!

曾经React、Vue等热门的开发框架,已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发,那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地,未来企业更看重能用AI大模型技术重构业务流的技术人。

如今技术圈降薪裁员频频爆发,传统岗位大批缩水,相反AI相关技术岗疯狂扩招,薪资逆势上涨150%,大厂老板们甚至开出70-100W年薪,挖掘AI大模型人才!

在这里插入图片描述

不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态,吸引了很多人的关注和兴趣,也有很多新人小白想要学习入门大模型,那么,如何入门大模型呢?

下面给大家分享一份2025最新版的大模型学习路线,帮助新人小白更系统、更快速的学习大模型!

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

四、大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享

手把手教你用XC7A35T FPGA搭建低成本机器视觉系统(含开发板选型指南) 本文详细介绍了如何利用AMD(原Xilinx)Artix-7系列中的XC7A35T FPGA芯片,搭建一套低成本的机器视觉系统。内容涵盖从芯片选型深度剖析、开发板(如黑金AX7035B)对比指南,到使用Vivado创建工程、编写图像处理模块(如RGB转灰度),以及资源优化和与上位机(如OpenCV)协同工作的完整流程,旨在为开发者提供一套可实践的高性价比硬件加速视觉解决方案。 阅读详情

相关推荐

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.youkuaiyun.com/aanndd77/art

qq_39820505的博客 1万+

一文读懂什么是 PWA?

PWA 全称为 Progressive Web App,中文译为渐进式 Web APP,其目的是通过各种 Web 技术实现与原生 App 相近的用户体验。

杏子 5万+

STM32L151C8T6低功耗实战:RTC闹钟唤醒停机模式的配置与优化

本文详细介绍了如何在STM32L151C8T6微控制器上配置与优化RTC闹钟唤醒停机模式,以实现极致的低功耗设计。文章从核心原理出发,结合STM32CubeMX配置实战,深入讲解了进入停机模式前的关键准备工作、唤醒后的系统恢复流程,并分享了将功耗降至个位数微安级的深度优化技巧与常见问题解决方案。

weixin_29166013的博客 301

一文读懂什么是 PWA(Progressive Web App)

PWA, 即Progressive Web App, 是提升Web App的体验的一种新方法,能给用户原生应用的体验。PWA 不是一项技术, 也不是一个新的产物,而是一系列Web技术与标准的集合与应用。通过应用这些新的技术与标准, 可以从安全、性能和体验三个方面, 优化我们的Web App。 所以其实PWA 本质上依然是个Web App。

青春木鱼的博客 1万+

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3093

AltiumDesigner相同模块复用操作

AltiumDesigner相同模块复用操作框选已布局好的A电路,作为复用模块创建Room同样的操作,框选C电路,然后也创建Room查看A电路的Chanel Offset显示设置复制Channel Offset查看B电路的Channel Offset复制A电路的Channel Offset到C电路Room格式的复制 框选已布局好的A电路,作为复用模块 创建Room 同样的操作,框选C电路,然后也创建Room 查看A电路的Chanel Offset 框选A模块的,然后点右下角的菜单——PCB——PCB

weixin_41947101的博客 5960

一文了解PWA——Progressive Web App

近年来,出现了一种新的应用开发模式——PWA(Progressive Web App,即渐进式Web应用)。今天就来为大家分享什么是PWA,以及它与小程序的区别、技术原理。

Lydiasq的博客 4571

ABAP Cloud 开发教程的文章目录

本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1806

前端PWA应用的相关知识和基础Demo

PWA 主要拥有以下几种特点:① 跨平台② 可安装③ 离线访问④ 推送通知⑤ 快速加载⑥ 可搜索⑦ 热更新。 PWA的实现依赖于多种技术实现,其中最核心的技术为`Service Worker`、`Web App Manifest`和`Push Notification`。

weixin_45092437的博客 6492

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,本文的内容接上一篇的代码逐行解析(一) 项目目录分析,本文对于小白来说非常友好,非常推荐大家进行阅读,深度的了解模型的工作原理已经流程,下面我们从yaml文件来讲解。

Snu77的博客 1万+

TMF8801 ToF激光测距传感器原理图设计,已量产(距离传感器)

这张 TMF8801 小板的外围结构就很有代表性。核心传感器是 U1 TMF8801,但真正构成量产价值的是外围那一圈:U2 把 VCC 整理成 3V,R1/R2/R5 与 R3/R4/R6 两组 10K 电阻稳定默认态,Q2 2N7002 和 U3 SN74LVC2G07DCKR 处理控制链路,传感器边上还有 C1/C4/C5 三颗 100nF 紧贴去耦。

不脱发的程序猿 159

PWA详解

PWA(Progressive Web App,渐进式网页应用,渐进式接近原生app的web app)是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生功能,比如通知推送。在移动端利用标准化框架,让网页应用呈现和原生应用相似的体验。 PWA不能包含原生OS相关代码。PWA仍然是网站,只是在缓存、通知、后台功能等方面表现更好。Electron程序相当于包裹OS原生启动器(Launcher)的网站,未来,许多Electron程序可能转化为PWA。 1. 概念 P

顺其自然~专栏 1万+

【第2章>第10节】深度学习DenseNet模型分析与matlab仿真

本文介绍了基于DenseNet深度学习模型的图像分类MATLAB实现方法。主要内容包括:1. DenseNet模型原理,详细解析了初始卷积层、密集块、过渡层等核心结构;2. 在MATLAB环境下完成DenseNet工具箱安装和测试样本准备;3. 实现图像预处理(统一缩放为224×224)、模型训练和测试的完整流程;4. 提供了混淆矩阵和准确率等测试结果分析。文章附带完整的MATLAB程序代码和操作视频教程,适合深度学习初学者快速掌握DenseNet模型的图像分类应用。通过实际测试,验证了该方案的有效性。

FPGA/MATLAB学习教程/源码/项目合作开发 330

Vue脚手架配置项Progressive Web App(PWA)

简单介绍一下Progressive Web App(PWA) 王玉略正在上传…重新上传取消 2018年01月29日 10:55·阅读 48409 关注 前段时间在公司的内部分享会上简单地介绍了一些关于PWA的技术,不过当时用的是思维导图版本的,现在整理成博客分享给大家 Progressive Web App(PWA) 一、前期介绍 1、为什么要将PWA作为本次的技术分享 2017年11月份,谷歌在上海举办了一个开发者大会,期间在很多会场都有关于PWA的介绍,王二认为谷歌在致力于推...

好的文章我尽力写,大家的学习我尽力帮 8630

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

渐进式Web应用(Progressive Web App,PWA)

渐进式Web应用(Progressive Web App,PWA)

商务合作欢迎私信我 7382

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Progressive Web App(PWA)

Progressive Web App一、 PWA 宣传 : Reliable ( 可靠的 )、Fast( 快速的 )、Engaging( 可参与的 )二、什么是Progressive三、为什么我们需要Progressive Web App 一、 PWA 宣传 : Reliable ( 可靠的 )、Fast( 快速的 )、Engaging( 可参与的 ) Reliable : 为什么他是可靠的呢,当用户从手机主屏幕启动时,不用考虑网络的状态是如何,都可以立刻加载出 PWA。 Fast:这一点应该都很熟悉了

GeniusXYT的博客 1932

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PWA(Progressive Web App)入门系列:安装 Web 应用

前言 在传统的 Web 应用中,通常只能通过在浏览器的地址栏里输入相应的网址才能进行访问,或者把网页地址创建到桌面上通过点击,然后在浏览器里打开。 传统模式下,图标、启动画面、主题色、视图模式、屏幕方向等等都无法去自定义和控制。 而目前可以通过 PWA 标准中的特性来完成上面这些功能,使得访问 Web 应用的路径更短、曝光性更大,下面说一下这一块。

王乐平 技术博客 3986

7个核心功能带你掌握Progressive Web App实战:从入门到精通的完整指南

GitHub 加速计划 / de / demo-progressive-web-app是一个展示Progressive Web App(PWA)核心功能的演示项目,通过这个项目,新手和普通用户可以直观了解PWA如何实现离线访问、添加到主屏幕、推送通知等强大功能。 ## 什么是Progressive Web App? Progressive Web App(PWA)是一种结合了网页和原生应用优点

gitblog_00510的博客 925

【PWA】渐进式Web应用(Progressive Web App)

PWA不仅是一种技术,更是一种理念:它通过结合 Web 和移动应用的特点,为用户带来更加流畅和快速的体验。同时,PWA还具备离线访问能力,这对于那些时刻有网络问题的用户来说尤为重要。

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 3486

PWA (Progressive Web App)

PWA (Progressive Web App)

JackChan 1323

什么是Progressive Web App(PWA)?它们有哪些特点?

什么是Progressive Web App(PWA)?它们有哪些特点?

商务合作欢迎私信我 2万+

谷歌离线应用之渐进式 Web 应用 Progressive Web APP(PWA)

渐进式Web应用(PWA)是一种融合Web和原生应用特性的技术方案,使用HTML、CSS和JavaScript构建。核心优势包括可安装性、离线访问、快速响应和跨平台兼容性。PWA通过Service Workers缓存资源,支持推送通知,且无需应用商店审核。开发成本低,维护简单,适用于电商、教育等场景。文章还提供了基于Vite+React的PWA开发示例,包括配置安装插件、检测安装状态和引导用户安装等功能实现。PWA上线需满足SSL证书和响应式设计等条件。

前端开发-前端技术分享 1464

PWA中的全屏实现:使用screenfull提升Progressive Web App体验

你是否曾在使用Progressive Web App(PWA,渐进式网页应用)时遇到过全屏功能在不同浏览器上表现不一致的问题?或者发现原生JavaScript Fullscreen API的浏览器兼容性处理让代码变得臃肿不堪?本文将介绍如何通过轻量级库screenfull简化PWA中的全屏功能实现,让你的应用在各种设备上都能提供流畅一致的全屏体验。读完本文后,你将能够:理解screenfull的核

gitblog_00916的博客 716

Google Progressive Web App简称PWA

10月22日参加了谷歌的一个分享大会,其中分会场就是Progressive Web App(PWA) PWA:是由谷歌提出推广的,在移动端利用提供的标准化框架,在网页应用中实现和原生应用相近的用户体验。 优点: 1.后台加载:引入Service Worker概念,即使网页关闭仍然可以在后台运行获取数据更新(只能更新小部分数据有限制) 2.消息推送:用户允许,即使网页关闭后依然可以接受到系统

侞婼冇罪 6906

PWA(Progressive Web App)入门系列:(一)PWA简介

前言PWA做为一门Google推出的WEB端的新技术,好处不言而喻,但目前对于相关方面的知识不是很丰富,这里我推出一下这方面的入门教程系列,提供PWA方面学习。什么是PWAPWA全称Progressive Web App,直译是渐进式WEB应用,是 Google 在 2015 年提出,2016年6月才推广的项目。是结合了一系列现代Web技术的组合,在网页应用中实现和原生应用相近的用户体验。所谓的P(

王乐平 技术博客 2万+

Progressive Web App(PWA)介绍

Progressive Web App(PWA)背景介绍 很多人似乎都认为Web,应用永远不会与本机竞争,移动应用程序的可靠性速度和用户参与,很难建立一个他们的商业案例。 你知道吗?你知道他们曾经是对的,但有两件事情发生了变化。 首先,事实证明,大多数人在购买手机时购买了大部分应用程序,或者不久之后大多数人安装了一些常见应用程序并只用了一天,这使得开发人员难以参与竞争,但人们仍然继续使用...

dianxinshuan5366的博客 629
上一篇: Web前端开发学习笔记,零基础入门到精通,收藏这篇就够了
下一篇: 前端程序员未来的出路
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值