Рубрики
Без рубрики

Как настроить работников службы с помощью создания-реактивного приложения

Это следующее до моего предыдущего поста о создании PWA с помощью Create-React-App (CRA). В связи с подключенным постом я обсуждал, как мы могли бы построить пользовательский сервисный работник (SW), оставаясь в рамках Create-React-App. Если вы следили вместе с постом (и надеюсь, получили его

Автор оригинала: FreeCodeCamp Community Member.

Это следующее до моего Предыдущий пост О создании PWA с созданием-реактивным приложением (CRA). В связи с подключенным постом я обсуждал, как мы могли бы построить пользовательский сервисный работник (SW), оставаясь в рамках Create-React-App.

Если вы следили вместе с постом (и, надеюсь, получили его работать), вы заметили один критический недостаток. Это все еще чрезвычайно трудно развивать SW в среде Dev. По сути, вам нужно будет изменить код SW, запустите процесс сборки, проверьте его, утяните любые ошибки, обновите и повторите. Выступая из опыта, это утомительный процесс.

Давайте пойдем вперед и выяснить, как решить эту проблему.

Работа в режиме разработки

Хорошо, так как мы получаем SW, работающие в режиме Dev, поэтому мы можем быстро написать какой-то плохой код, и выяснить, что работает и что нет?

Во-первых, давайте посмотрим, почему он не работает в режиме Dev. Создайте свежий проект CRA и откройте RegisterServiceWorker.js под SRC каталог.

В приведенном выше цисте у меня есть только соответствующий кусок кода. Вы заметите условный чек process.env.node_env Отказ Это проверяется, если вы используете производственную сборку. Если вы не используете сборку производства, SW будет заменен файлом NO-OP.

Разумность этого решения предоставляется в этом Выпуск GitHub Отказ

Во-первых, попробуйте запустить Пряжа начать В вашем приложении и проверьте файл SW в окне панели инструментов. Если вы нажмете на Service-Worker.js Ссылка на панели инструментов, вы будете отображены следующий файл:

К счастью, для этого есть простое исправление. Это легкий двухэтапный процесс.

Во-первых, внутри RegisterServiceWorker.js Файл, ищите window.addeventListener («нагрузка») Функциональный вызов. Первая строка – это декларация для Swurl который говорит:

const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;

Переименуйте Сервис-работник часть этого с чем-либо еще. Я собираюсь назвать мой Service-Worker-custom.js Отказ

Во-вторых, создайте файл внутри вашего публичного каталога с помощью Точно так же имя Как пользовательское имя, с которым вы только что придумали. Итак, я бы создал файл под названием Service-Worker-custom.js внутри публичного каталога.

Теперь внутри Service-Worker-custom.js Поместите простую оператор журнала. Что-то вроде: Console.log («Мой пользовательский сервис») Отказ

Теперь снова запустите свое приложение с Пряжа начать И вы должны увидеть оператор журнала в вашей консоли браузера. Вам может потребоваться отменить регистрацию предыдущего служебного работника, если вы когда-нибудь запустили пряжу начать до этого.

Итак, там у вас есть. Пользовательский служащий, который вы можете безопасно работать внутри режима Dev.

ПРИМЕЧАНИЕ. Неразумно тестировать сервисный работник в разработке env вне личного режима просмотра в вашем браузере. Кроме того, всегда убедитесь, что обновление на перезагрузке проверяется внутри вашего окна «Инструменты DEV» при тестировании в режиме Dev.

Сочетать dev и prod

Теперь мы выяснили, как проверить SW в режиме разработки. Тем не менее, нам также нужно найти способ ввести наш заказный код в SW, созданный CRA в производственной сборке.

Если вы держите все, что и с конфигурациями, которые мы сделали до сих пор и запустили процесс сборки и проверьте сборку в вашем браузере, вы заметите, что созданный файл SW – это пользовательский, который мы создали. Это проблема, потому что мы хотим иметь возможность объединить доброту того, что CRA предложит нам наш собственный код.

Мы можем сделать это с SW-regache библиотека. Я представил эту библиотеку в моем Предыдущий пост Отказ Вот Github Link к SW-regache библиотека.

Установите библиотеку с помощью пряжа Добавить SW-цари собой Отказ Как только вы сделали это, создайте SW-Pracache-Config.js Файл в вашем корневом каталоге. Вот мой файл:

Я ввел большую часть этого файла в Предыдущий пост Отказ Единственный новый бит – ImportCripts вариант. Это довольно неясно, это просто импортирует файл, указанный по пути, и мы пытаемся импортировать наш пользовательский файл SW.

Вы заметите, что путь файла не хватает ./public префикс, несмотря на присутствующий файл в нашем публичный каталог. Я объясню это немного.

Теперь обновите свой Package.json Файл с модификацией для построить команда. Сделать свой построить Команда следующее:

React-Scripts Build && SW-Pracache-Pracache-Config.js

Теперь давайте вернемся к файлу, который мы предоставили опцию ImportScripts. Если вы заметите, SW-regache по существу работает в качестве процесса постепенного сооружения. Теперь, если вы просто запустите процесс сборки, и откройте созданный каталог сборки, вы заметите ваш файл пользовательского обслуживания в папке сборки. Когда мы предоставляем путь к ImportCripts Опция, мы предоставляем это относительно каталога сборки!

После того, как вы сделали все это, пройдите вперед и запустите сборку своего приложения, и вы заметите, что оператор журнала снова появляется в консоли браузера.

Ну, там у вас есть! Теперь вы можете ввести какой-то пользовательский код SW в SW по умолчанию, сгенерированный CRA!