当前位置: 首页 > news >正文

没技术怎么做网站中专计算机专业主要学什么

没技术怎么做网站,中专计算机专业主要学什么,有那种做拼贴的网站吗,网站开发流程传智播客Progressive Web Apps (PWA) 的离线优先策略是通过Service Worker和Cache API实现的#xff0c;它允许在没有网络连接时仍然可以访问网站的部分或全部内容。 2500G计算机入门到高级架构师开发资料超级大礼包免费送#xff01; 1. 创建Service Worker注册文件#xff08;se…Progressive Web Apps (PWA) 的离线优先策略是通过Service Worker和Cache API实现的它允许在没有网络连接时仍然可以访问网站的部分或全部内容。 2500G计算机入门到高级架构师开发资料超级大礼包免费送 1. 创建Service Worker注册文件service-worker.js self.addEventListener(install, (event) {event.waitUntil(caches.open(my-cache-v1).then((cache) {return cache.addAll([/index.html,/style.css,/script.js,// 添加其他需要预缓存的文件路径]);})); });self.addEventListener(fetch, (event) {event.respondWith(caches.match(event.request).then((response) {if (response) {return response;}return fetch(event.request).then((networkResponse) {caches.open(my-cache-v1).then((cache) {cache.put(event.request.url, networkResponse.clone());});return networkResponse;}).catch(() {// 如果所有尝试都失败可以返回一个备用响应比如错误页面return caches.match(/offline.html);});})); });2. 注册Service Worker 在你的主应用中注册Service Worker if (serviceWorker in navigator) {window.addEventListener(load, () {navigator.serviceWorker.register(/service-worker.js).then((registration) {console.log(Service Worker registered:, registration);}).catch((error) {console.error(Service Worker registration failed:, error);});}); }3. 更新策略 当有新版本的应用时需要更新Service Worker和缓存内容。可以在Service Worker中监听activate事件 self.addEventListener(activate, (event) {event.waitUntil(caches.keys().then((cacheNames) {return Promise.all(cacheNames.filter((cacheName) cacheName ! my-cache-v1).map((cacheName) caches.delete(cacheName)));})); });4. 更新Service Worker 更新Service Worker时需要改变Service Worker文件名如增加版本号这样浏览器会认为这是新的SW并触发安装过程。 5. 更新Service Worker生命周期管理 确保在Service Worker更新时旧版本的Service Worker不会影响用户体验。通常你可能希望旧版本Service Worker完成所有请求后再关闭 self.addEventListener(message, (event) {if (event.data event.data.type SKIP_WAITING) {self.skipWaiting();} });6. 配置manifest文件 创建一个manifest.json文件定义应用的元数据和离线图标 {short_name: My App,name: My Awesome Progressive Web App,icons: [{src: icon-192.png,sizes: 192x192,type: image/png},{src: icon-512.png,sizes: 512x512,type: image/png}],start_url: /index.html,display: standalone,background_color: #ffffff,theme_color: #000000 }在HTML中引用manifest文件 link relmanifest href/manifest.json7. 离线通知和重新加载提示 当用户离线后重新上线时可以通过Service Worker发送通知提醒用户重新加载页面以获取更新内容 self.addEventListener(online, (event) {clients.matchAll({ type: window }).then((clients) {clients.forEach((client) {client.postMessage({ type: RELOAD });});}); });self.addEventListener(message, (event) {if (event.data event.data.type RELOAD) {clients.matchAll({ type: window }).then((clients) {clients.forEach((client) {if (client.url self.registration.scope focus in client) {client.focus();client.reload();}});});} });在主应用中监听消息 navigator.serviceWorker.addEventListener(message, (event) {if (event.data event.data.type RELOAD) {alert(网络已恢复刷新页面获取最新内容。);location.reload();} });8. 离线提示和体验 当用户离线时提供友好的离线页面或提示 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title离线页面/titlestylebody {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background-color: #f2f2f2;}h1 {font-size: 2rem;color: #333;}/style /head bodyh1您已离线稍后再试。/h1 /body /html然后在Service Worker的fetch事件中处理 self.addEventListener(fetch, (event) {event.respondWith(caches.match(event.request).then((response) {if (response) {return response;}// 检查网络请求失败的情况return fetch(event.request).catch(() {// 返回离线页面return caches.match(/offline.html);});})); });9. 更新缓存策略 有时你可能希望缓存特定版本的资源而不是始终使用最新的。这可以通过在Service Worker中添加版本控制来实现 const CACHE_NAME my-cache-v2; const urlsToCache [// ... ];self.addEventListener(install, (event) {event.waitUntil(caches.open(CACHE_NAME).then((cache) {return cache.addAll(urlsToCache);})); });self.addEventListener(fetch, (event) {event.respondWith(caches.match(event.request).then((response) {if (response) {return response;}return fetch(event.request).then((networkResponse) {caches.open(CACHE_NAME).then((cache) {cache.put(event.request.url, networkResponse.clone());});return networkResponse;});})); });10. 使用App Shell架构 App Shell模型是一种常见的PWA设计模式它提供一个基本的用户界面框架即使在离线状态下也能加载。App Shell通常包括导航、头部、侧边栏等非动态内容这样即使在离线时用户也能看到应用的基本结构。 首先创建一个App Shell HTML文件如app-shell.html包含基本的布局和样式。然后在Service Worker中预缓存App Shell const appShellUrls [/app-shell.html,/app-style.css,// 其他App Shell相关的资源 ];self.addEventListener(install, (event) {event.waitUntil(caches.open(app-shell-cache).then((cache) {return cache.addAll(appShellUrls);})); });在fetch事件中优先从缓存中获取App Shell资源 self.addEventListener(fetch, (event) {if (event.request.mode navigate) {event.respondWith(caches.match(/app-shell.html));} else {event.respondWith(caches.match(event.request).then((response) {if (response) {return response;}return fetch(event.request);}));} });11. 使用Service Worker拦截网络请求 Service Worker还可以用于拦截特定类型的网络请求例如API调用。这使得你可以在离线时返回默认值或存储的响应以提供一致的用户体验 self.addEventListener(fetch, (event) {if (event.request.url.startsWith(https://api.example.com)) {event.respondWith(caches.match(event.request).then((response) {if (response) {return response;}return fetch(event.request).then((networkResponse) {caches.open(api-cache).then((cache) {cache.put(event.request.url, networkResponse.clone());});return networkResponse;});}));} else {// 处理其他非API请求} });12. 集成WebSocket支持 如果你的应用使用WebSocket进行实时通信可以使用workbox-websocket库在Service Worker中处理WebSocket连接确保在离线时能够接收和发送消息 importScripts(https://unpkg.com/workbox-swlatest/runtime-caching/workbox-sw.prod.v2.js); importScripts(https://unpkg.com/workbox-websocketlatest/workbox-websocket.prod.v2.js);workbox.webSocket.register(wss://your-websocket-endpoint.com, {onConnect: (client) {console.log(WebSocket connected:, client);},onClose: (client) {console.log(WebSocket disconnected:, client);}, });13. 测试和监控 确保在不同网络条件下测试你的PWA包括2G、3G和离线状态。可以使用Chrome开发者工具的模拟网络条件功能。同时使用Lighthouse等工具定期评估PWA的性能和离线体验。 14. 总结 通过这些策略可以创建一个高度可用且用户体验优秀的PWA即使在离线或弱网络环境下也能正常工作。PWA的目标是提供接近原生应用的体验因此持续优化和测试是关键。 2500G计算机入门到高级架构师开发资料超级大礼包免费送
http://www.dnsts.com.cn/news/192831.html

相关文章:

  • 东莞网站制作建设收费肇庆建站模板源码
  • 安庆建设网站如何进行网络推广市场定位
  • 方案网站去掉自豪地采用wordpress
  • 如何做招聘网站运营沈阳网站制作平台
  • 淄博企业网站制作h5页面怎么制作免费
  • 基层科普网站建设的现状网站设计的一般流程是什么
  • 哪类型网站容易做seo服务包括哪些
  • 株洲做网站渠道电话站长一般几个网站
  • 企业网站建设内存移动互联网开发学什么
  • 广东网站设计哪家专业四川网站建设价格
  • seo网站优化价格实验室网站开发框架
  • 在线做爰直播网站农村做网站开发
  • 为什么asp.net做的网站上传后不显示照片江西网站建设公司哪家好
  • 网站定制开发成本网站建设与管理专业是什么
  • 泰安网站建设推广有做游戏广告的网站
  • 微信如何绑定网站聊城公司做网站
  • 网站建设和域名备案公司网站管理制度
  • 建设局查询网站做一个营销型网站需要多少钱
  • 山西钢建公司简介seo常用工具网站
  • 郑州网站制作培训学校企业用的邮箱是什么邮箱
  • 自适应网站和响应式网站的区别wordpress 获取内容
  • ppt素材网站建设流程图一直在做竞价的网站是不是不需要做seo
  • 什么网站专门做自由行的基于php电子商务网站开发
  • 上海城乡住房建设部网站建设网站的十个步骤
  • 500强网站设计网页搜索框记录怎么删除
  • 三线建设网站向客户介绍网站建设的话本
  • 网站与网站自动跳转代码聚名网络科技
  • 北京自己怎么做网站外贸自建站平台怎么选
  • 建设规划展览馆网站的优势内网网站建设改版方案
  • 重庆微信企业网站房地产怎么做网站推广