问题如下(来自 ServiceWorkers API 的一些限制): ServiceWorkers API 目前不支持导入 ES6(在 Chrome 80 中会,但在当前稳定版本 79 中不支持。这意味着需要更多人们更新手机和浏览器的时间超过一年)。
我必须导入一些将在 ServiceWorker 中使用的自定义 ES6 类。
使用它的默认配置,Quasar 将在运行时提供一个/service-worker.js
文件,quasar dev
或者在运行时构建一个文件quasar build
。Quasar 可能会自动转换您的文件custom-service-worker.js
,但遗憾的是它不会。以下段落解释了为什么不这样做。
(更具体地说,我正在构建一个 PWA。)Quasar 的坏处在于它为此目的在GoogleChrome/workbox
内部使用(Workbox 的功能对项目来说非常好,但正如大多数 Google 产品所发生的那样,它的支持很差,它有 1 -2 大缺点)。请参阅:https ://github.com/GoogleChrome/workbox/issues/1513
所以,Quasar 在幕后使用他们的workbox-webpack-plugin
. 它由名为 GenerateSW 和 InjectManifest 的两个类组成。
它们都不能以从 ES6 到 ES5 的自动转换的方式进行配置。
我的解决方案显然是创建另一个 NPM\Webpack 配置并使用它来构建这些文件,而不会以任何方式干扰 Quasar 的配置。
后者的主要缺点是,我必须手动构建(在 Quasar 之外)我在 ServiceWorker 中导入的这些自定义 ES6 类(在它们被转译之后)。即它打破了Quasar 的自然流程(例如只使用qasar dev
and quasar build
),并且这些文件将在很长一段时间内处于积极开发中(因此会大大阻碍开发)。
我发现很难找到重新配置的起点。配置 Webpack 非常复杂,我没有太多时间去修改它,所以 Quasar 的上下文使它变得更加复杂。
如何让 Quasar 编译特定的 ES6 JavaScript 文件并以它的服务方式为它们提供服务app.js
,client-entry.js
以及import-quasar.js
?有没有这样的方法(如果有它会立即解决我的问题workbox-webpack-plugin
)?关于 Quasar 或 Webpack 的任何建议?