create-react-app创建的项目中registerServiceWorker.js文件的作用

使用React官方的脚手架工具create-react-app创建的项目,目录中会存在registerServiceWorker.js这个文件,这个文件的作用是什么呢?

这个文件可以使用也可以不使用,使用它可以使你的react项目变成一个PWA(Progressive Web Application), 也就是说,在线上,只要访问过一次你的网站,下一次即使没有网络,这个应用依然可以被访问。当然,它的好处不仅这么一点点,在移动端打开项目时,如果你用的是chrome或者firefox这样的高级浏览器,浏览器会给你的页面不太一样的显示,你的网页看起来会更像原生App,实际上体验也更爽。

在项目的public目录下,存在一个manifest.json文件,你可以在这里对你的网页做一些配置,当用户访问网页,生成一个网页的桌面快捷方式时,会以这个文件中的内容作为图标和文字的显示内容。

配置好manifest.json, 使用registerServiceWorker.js,用户完全可以把你的网页快捷方式放到桌面上,因为你的网页此时支持离线访问,所以用起来和原生app的体验很接近。

大家可以做这样一个试验:

  1. 创建一个项目
  2. 运行npm run build
  3. 然后在本地开一个服务器,把build目录中的内容放在服务器的根目录下
  4. 通过localhost的域名访问服务器
  5. 访问过一次之后,断掉网络,重新访问

你会发现,即使没有网络,这个时候依然可以访问你的应用。需要注意的是,只有打包生成线上版本的react项目时,registerServiceWorker.js才会有效。本地开发时,这个文件没什么效果,因为如果本地开发使用这个文件,有可能会因为缓存造成调试问题。

还需要注意的是,项目在本地,通过localhost域名访问,支持http协议。如果真正放到线上,如果想让registerServiceWorker.js生效,服务器必须采用https协议,这也是为什么很多同学本地测试好用,线上就不好用的原因。

registerServiceWorker.js中的这些功能,并不是React所独创的内容,而是React对PWA的一个实现,PWA未来的发展前景不错,从扩展视野角度也值得大家一看,如果你想了解更多,可以访问PWA的官方手册,这里讲解了PWA底层关于serviceWorker很多的内容,非常有趣:

https://codelabs.developers.google.com/codelabs/your-first-pwapp/#0?codelabs.developers.google.com

原文地址:https://www.cnblogs.com/CCxi/p/9784901.html

时间: 2024-11-08 23:56:33

create-react-app创建的项目中registerServiceWorker.js文件的作用的相关文章

向MyEclipse的项目中导入js文件时,出现小红叉

这个问题困扰我很久.刚开始时,也没有解决,因此也在网上寻找解决方法,还是没能解决.最近做项目时再一次出现了这样的问题,于是决定还是再找找办法.在此,分享一下自己的解决方法,给正处于痛苦中的童鞋们带来解药.具体方法如下: 首先右击js文件->MyEclipse->Exclude from Validation.(其实此时小红叉就已经消失了) 然后再右击js文件->MyEclipse->run Validation. Ok.希望给小伙伴们能带来一些帮助.

向MyEclipse中的web项目中导入js文件时,出现小红叉

这个问题困扰我很久.刚开始时,也没有重视,因此也没有在网上寻找解决方法.最近做项目时再一次出现了这样的问题,于是决定还是找找办法.在此,分享一下自己的解决方法,给正处于痛苦中的童鞋们带来解药.具体方法如下: 首先右击js文件->MyEclipse->Exclude from Validation.(其实此时小红叉就已经消失了) 然后再右击js文件->MyEclipse->run Validation. Ok,就这么easy.希望给小伙伴们能带来一些帮助.

React漫漫学习路之 利用Create React App命令创建一个React应用

所谓万事开头难,本文旨在为初探React的同学,建立第一个最基本的react应用. Create React App是Facebook官方的一个快速构建新的 React 单页面应用的脚手架工具,它可以帮你配置开发环境,以便你可以使用最新的 JavaScript 特性,还能提供很棒的开发体验,并为生产环境优化你的应用.(如果你使用过vue-cli构建vue应用,那么此处可类比) 话不多说,直接开始. 安装 全局安装create-react-app npm install -g create-rea

【vue】如何在 Vue-cli 创建的项目中引入 iView

根据vue项目的搭建教程,以下记录如何在Vue-cli创建的项目中引入iView. 1)iView的安装,在项目下使用 npm 安装iView cnpm install  iview  --save 2)在 webpack 入口页面 main.js   (E:\managerSys\manager-sys\src\main.js)中 添加 如下配置: import iView from 'iview'; // 导入组件库import 'iview/dist/styles/iview.css';

【vue】如何在 Vue-cli 创建的项目中引入iView

根据vue项目的搭建教程,一下记录下如何在Vue-cli创建的项目中引入iView. 1)安装iView,在项目下 cnpm install  iview  --save 2 ) 在 webpack 入口页面 main.js (E:\managerSys\manager-sys\src\main.js)中配置 import iView from 'iview'; // 导入组件库import 'iview/dist/styles/iview.css'; // 导入样式 Vue.use(iView

iOS 项目中的常见文件

iOS的笔记-项目中的常见文件   新建一个项目之后,有那么多的文件,下面介绍一下主要的几个. 1.文件名 (1)AppDelegate UIApplication的代理,app收到干扰的时候,进行处理系统事件.比如,来电话,内存警告,应用启动.. (2)ViewController 控制器,可以通过xib\storyboard\代码 三种方式创建可视化界面. 这个可视化界面,将会显示在UIWindowz中 . (3)MainStoryboard 系统自动创建的 (4)Images.xcasse

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVersionKey 2.沙盒的数据存储及读取 1> 数据存储: [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey]; 存储数据时记得同步一下 [[NSUserDefaults standardUser

对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新

对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新 <?xml version="1.0" encoding="UTF-8"?> <web-app> <!-- 在创建web项目时,若是系统自动生成,上面会有一串配置信息,因为不影响大局,这里没有列出--> <!-- 流程: 当在网页中使用/login时,发现不是网页,则会在web.xml找寻对应的名字,由url-

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&