在下面的脚本中,我正在编写一个firebase变量,而不是我的repo。我的firebase值都在一个文件中,其余的javascript导入那些使用ES6模块(和webpack)的文件。但是我应该如何从此服务工作文件
访问该数据importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');
// Initialize the Firebase app in the service worker by passing in the config.messagingSenderId.
firebase.initializeApp({
'messagingSenderId': "8033333334"
});
// firebase.initializeApp({
// 'messagingSenderId': config.messagingSenderId
// });
答案 0 :(得分:1)
通过importScripts()
引用的任何脚本都将在与主服务工作文件相同的ServiceWorkerGlobalScope
中同步执行。这意味着它们共享相同的self
全局,并且您知道在importScripts()
完成后,它们将完全执行。
因此,如果你有一个名为bootstrap.js
的脚本,它包含
self.config = self.config || {};
self.config.messagingSenderId = 'my_sender_id';
然后您可以在service-worker.js
中执行以下操作:
importScripts(
'bootstrap.js',
'https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js',
'https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'
);
firebase.initializeApp({
'messagingSenderId': self.config.messagingSenderId
});
由您决定是否bootstrap.js
检查源控件,是否在构建期间动态生成它等等。