В настоящее время я пытаюсь преобразовать мою "полную JS" PWA (из этого курса Удеми ) в PWA на Rails 6. Он использует уведомления indexedDB (idb), SyncManager и Pu sh и работает отлично. Это простое приложение, в котором вы можете создавать посты с изображением (из вашей камеры или ваших файлов), заголовком и местоположением.
Я пробовал много способов реализовать функции PWA, будь то непосредственно в публикации c папка или через контроллер (см. методы Джона Битти ), или с pwa-rails gem или workbox . Все они приводят к одной и той же проблеме: мой SW не может получить доступ к нужным сценариям, особенно к тому, который управляет indexedDB.
Давайте возьмем версию моего приложения "SW controller" (см. 2-й метод Дж. Битти):
- Структура
- Мой ServiceWorkerController имеет 3 метода: service_worker , манифест и в автономном режиме, и я получил следующие подходящие маршруты:
get '/offline.html', to: 'service_worker#offline'
get '/manifest.json', to: 'service_worker#manifest'
get '/service-worker.js', to: 'service_worker#service_worker'
Я пробовал много-много способов сделать мои скрипты доступными для моего ПО, потому что ему нужен доступ к файлу моей утилиты. js и так же к пакету idb, но единственный успешный импорт, который мне удалось сделать, это:
importScripts("<%= asset_pack_path('app.js') %>")
Это идет не так, потому что он импортирует все, включая сценарии, которые манипулируют де Дом. А поскольку ПО не имеет доступа к DOM, происходит сбой (с сообщениями об ошибках типа «окно не определено»). Если я пытаюсь импортировать только утилиту. js, она не работает, говорит, что не может найти скрипт ...
Был ли кто-нибудь в состоянии построить PWA с Rails 6 (с веб-упаковщиком и turbolinks) который использует, помимо прочего, indexedDB, а не базовый c предварительный кеширование некоторых активов? Кажется, я не могу найти какой-либо ресурс по этому вопросу.
Заранее спасибо за ваше время!