вступление
У меня есть очень специфическая проблема, которую я пытаюсь решить с помощью программного обеспечения. Если вы читали Семь привычек высокоэффективных людей, могу организовать свою неделю в соответствии с третьей привычкой. Я сделаю пост, как только у меня будет что-то с наиболее важными функциями, чтобы вы могли попробовать.
Первоначально предполагалось, что это будет приложение, которое будет обслуживаться статическим сервером и постоянно находиться на клиенте.
После того, как я сделал большую часть приложения и начал изучать GraphQL
. Это заставило меня понять, что я мог бы получить от него больше пользы, если бы я мог связать его со своей учетной записью Google и получить доступ к своим данным с любого устройства.
Вероятно, это должно быть очевидно для большинства людей, но не для меня.
Меньше - больше
Я работаю фронтенд-разработчиком, поэтому мне не хотелось настраивать сервер, контейнеры Docker, микросервисы и все те функции, которые делают приложение достаточно безопасным, сверхпроизводительным, масштабируемым и т. д.
Как я уже говорил во вступлении, это личный проект. Поэтому я решил попробовать хостинг и серверную часть Firebase как услугу для хостинга,
- Хостинг. Firebase.
- База данных в реальном времени. Firebase.
- Управление пользователями, просто войдите в систему с помощью Google. Электронной почты и пароля нет.
- GraphQL. Firebase. Мне просто нужна установка без сервера с некоторыми функциями и NodeJS.
Начните с конца в виду
Я провел один день после изучения документации, пытаясь подключить эту библиотеку, чтобы заставить Firebase, React и Redux работать вместе. Это была цель, верно?
Я закончил с большим беспорядком. Я начал тщательно просматривать свой код, проблемы были:
- Я внедрил
reducer
с утраченными функциями, которые не нужны и не используются. - Я дважды инициализировал свое приложение.
- По какой-то причине я пытался сослаться на инициализацию приложения, чтобы получить аутентификацию.
- Я запускал
react-redux-firebase
геттеры со своими сагами, не нуждаясь в них.
Я начал задаваться вопросом А нужно ли мне это вообще?, Зачем?.
Делайте одно дело за раз
Я неплохо разбираюсь в react
, redux
, redux-saga
, react-router
и т. д. Есть много мелких деталей, играющих вместе. По большей части вы начинаете с малого и добавляете каждую функцию по мере необходимости.
Я делал это раньше, несколько раз. Я действительно понимаю основы и то, что делает каждая часть.
Как вы уже поняли, Firebase предлагает множество решений. Проблема заключалась в том, что я нашел библиотеку, похожую на то, что искал, и
попытался реализовать их все сразу.
Библиотека react-redux-firebase
, в конце концов я обнаружил, что она мне даже не нужна.
Простота всегда лучше
Разочарованный и любопытный, после просмотра нескольких источников. Я решил удалить все вещи, которые мне не нужны, а затем по одной вещи за раз. Это было проще и легче, чем я ожидал. Вот список вещей, которые мне нужно сделать по порядку:
- Настройка хостинга.
- Сохраните конфигурацию где-нибудь в репозитории.
- Включите аутентификацию Google в консоли Firebase.
- Создайте компонент страницы входа.
MapDispatchToProps
, чтобы одним щелчком мыши выполнить нужное действие.- Посмотрите это действие в
watcherSaga
. - В рабочей саге откройте всплывающее окно Google Auth и обработайте ответ.
Вывод
Для тех, кто разбирается в компонентах высокого порядка, JWT, генераторах ES6 и наблюдаемых объектах. Это забавное положение.
Вещи легче объяснить, когда вы их понимаете. Всегда можно узнать что-то новое, и, несмотря на первоначальное разочарование, это был отличный опыт обучения.
Если вы хотите, чтобы я написал пост с пошаговым руководством о том, как делать то, что я описываю в этом посте, дайте мне знать.